【问题标题】:Why can't I get a in 1 dataframe all looped dataframes?为什么我不能在 1 个数据帧中获得所有循环数据帧?
【发布时间】:2021-09-26 00:22:03
【问题描述】:

我在 .csv 文件中列出了 5 个股票代码。我正在使用下面的循环从每个符号中获取选项数据。理想情况下,所有 5 个符号的输出都将保存在 .xlsx 文件中

如果我执行 print(df_puts),我会看到数据框中的所有符号。但是,输出 .xlsx 文件仅包含 .csv 文件中最后一个符号的数据。基本上它从最后一个循环符号打印数据,而不是从循环内的所有符号打印数据

我对 pandas 和 python 很陌生。我想了解为什么未来的项目会发生这种情况

stocklist = pd.read_excel(filePath)

for i in stocklist.index:
    stock=str(stocklist["Symbols"][i])
    #df = pdr.get_data_yahoo(stock, start, now, threads=False)
    option_dict = options.get_options_chain(stock)
    #print(option_dict)
    df_puts = pd.DataFrame.from_dict(option_dict.get("puts"))
    df_calls = pd.DataFrame.from_dict(option_dict.get("calls"))

newFile = os.path.dirname(filePath1) + "/OptionsOutput.xlsx"
writer = ExcelWriter(newFile)
df_puts.to_excel(writer, "puts", float_format="%.3f")
df_calls.to_excel(writer, "calls", float_format="%.3f")
writer.save()

【问题讨论】:

  • 你可以上传使用的文件吗?
  • @Anwarvic 您的意思是带有符号的 .csv 文件?输出 .xlsx 还是整个 python 文件?
  • 我的意思是 CSV 文件,抱歉
  • 我对@Tanishq 提供的答案很满意,但还是谢谢你!

标签: python pandas dataframe


【解决方案1】:

您需要将所有数据帧保存在一个数组中,然后将它们连接到最终数据帧中。之后,您可以将它们保存在 excel 文件中。

stocklist = pd.read_excel(filePath)
call_df_arr = [] # Created new lists to save dataframe for each stock
put_df_arr = []
for i in stocklist.index:
    stock=str(stocklist["Symbols"][i])
    #df = pdr.get_data_yahoo(stock, start, now, threads=False)
    option_dict = options.get_options_chain(stock)
    df_puts = pd.DataFrame.from_dict(option_dict.get("puts"))
    df_calls = pd.DataFrame.from_dict(option_dict.get("calls"))
    call_df_arr.append(df_calls) # Append DFs
    put_df_arr.append(df_puts)

final_call_df = pd.concat(call_df_arr) # Concat DFs
final_put_df = pd.concat(put_df_arr)
newFile = os.path.dirname(filePath1) + "/OptionsOutput.xlsx"
writer = ExcelWriter(newFile)
final_put_df.to_excel(writer, "puts", float_format="%.3f") # Changed name of df to final_put_df
final_call_df.to_excel(writer, "calls", float_format="%.3f")
writer.save()

编辑 - 添加 cmets 以完成代码更改。

【讨论】:

  • 谢谢!这是有道理的,而且奏效了!创建一个带有空列表的变量,在循环中将 df 的内容附加到此类列表中,然后在发送到 xlsx 之前连接!很棒的一课!!!
  • 我很高兴它有帮助,快乐编码:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 2022-08-06
  • 2016-10-05
相关资源
最近更新 更多