Сохранить файл с сохранением того же форматирования в pandas

#python #pandas

#python #pandas

Вопрос:

У меня есть программа, которая предоставляет мне информацию о запасах, когда я даю ей входной файл.

Этот файл перебирает каждую строку и выполняет некоторые простые вычисления.

 for index, row in df.iterrows():
    ticker=row['Ticker']

    ticker_stock = yf.Ticker(ticker.strip())
    data = ticker_stock.history()
    row['Price'] = (data.tail(1)['Close'].iloc[0])

    #Print Stock Name
    stockName = ticker_stock.info['longName']
    print(stockName)

    print(row['Ticker'], row['Price'])

    row['Value'] = row['BuyPrice'] * row['BuyAmount']
    print(row['Value'])

    row.to_csv('balance.csv')
  

Я хочу сохранить файл после выполнения вычислений, но формат отличается.

Вот пример входного файла:

 0,Ticker,BuyPrice,BuyAmount,Value,Price
1,MSFT,4832,4,43,456
  

И вот выходной файл, созданный программой.

 ,2
Ticker,MSFT
BuyPrice,4832.0
BuyAmount,4
Value,19328.0
Price,215.80999755859375
  

Есть ли способ сохранить файл, сохранив исходный формат? Понятно, что если я захочу перезапустить программу, она не будет работать. Поскольку строки теперь являются столбцами.

Ответ №1:

Вот исправленный код:

 for index, row in df.iterrows():
    ticker=row['Ticker']

    ticker_stock = yf.Ticker(ticker.strip())
    data = ticker_stock.history()
    df.loc[index, 'Price'] = (data.tail(1)['Close'].iloc[0])

    #Print Stock Name
    stockName = ticker_stock.info['longName']
    print(stockName)

    print(df.loc[index, 'Ticker'], df.loc[index, 'Price'])

    df.loc[index, 'Value'] = row['BuyPrice'] * row['BuyAmount']
    print(df.loc[index, 'Value'])

df.to_csv('balance.csv')
  

Изменения:

  1. выведите to_csv за пределы цикла
  2. вы to_csv только один раз и DF
  3. обновление значения с помощью df.loc[index, ]

Комментарии:

1. Это работает для сохранения правильного форматирования, но не сохраняет правильные данные. На самом деле, файл, похоже, ничего не сохраняет. Например, цена, которую я получаю в цикле, не сохраняется. Я думаю, это потому row['Price'] , что вычисляется, но не df['Price']