【问题标题】:Data Frame to CSV数据框转 CSV
【发布时间】:2021-11-17 20:52:42
【问题描述】:

我目前正在尝试将我的数据框导出到 csv 中。代码的基础是通过 yahoo_fin 运行一个代码列表并获取选项数据。该代码有效,并且我检索每个股票代码的信息,但是,当我为股票分配一个数据框以导出为 csv 表单时,csv 仅打开列表中的最后一项。示例:

stocks = ['AAPL', 'AMZN']

for stock in stocks:

    try:
        pd.set_option('display.max_columns', None)
        chain = options.get_options_chain(stock, 'October 15, 2021')
        print(chain['calls'])
    except:
        ValueError

    df = pd.DataFrame(chain['calls'], columns=['Contract Name', 'Last Trade Date', 'Strike', 'Last Price', 'Bid', 'Ask', 'Change', 'Volume', 'Implied Volatility'])
    df.to_csv(r'C:\Users\etcetc, index= False, header= True)```

#I am new to python and any help is appreciated! I tried running the data through XlsxWriter and it didn't work either. 

#Thanks!





【问题讨论】:

  • 您的意思是您只获取列表中最后一项的 csv 文件吗?如果是这样,那是因为你的 for 循环每次都写入同一个文件(即覆盖),所以你只能得到最后一个循环的结果。一种选择是根据 for 循环变量(即 stock)指定文件名,因此每个循环的文件名都不同。

标签: python


【解决方案1】:

df.to_csv在您的 for 循环中,因此它在每次迭代时写入一个 CSV 文件。但是,CSV 文件的名称始终是相同,因此它会在每次迭代时覆盖之前的文件

【讨论】:

  • 谢谢。因此,如果我摆脱缩进,它会不断更新 csv 吗?如果我用包含所有(链[调用])的不同变量定义数据框怎么办?我怎么能这样做?
  • 不,不会。我建议df.to_csv(r'C:\Users\etcetc' + str(stock) + ".csv", index= False, header= True) - 这将为每个“库存”创建一个文件。我认为另一个回复显示了如何将所有内容放在同一个文件中,所以我只是展示如何为每个项目创建一个文件。
【解决方案2】:

您的 df.to_csv 在 for 循环中,因此它会在每次迭代中覆盖先前生成的文件,但此处的行为应该是将数据附加到现有 CSV 文件的末尾而不是覆盖。

为此,您可以尝试使用 mode = 'a' 作为参数以及 indexname 参数编写 CSV,并且您必须处理 header 参数,因为通常,您不会不需要它来附加数据。你可以找到它的解决方案here

或者,首选方法是将数据从循环保存到数据帧中,并在一次写入操作中将整个数据帧写入循环外,这样您就不必担心处理标头。

【讨论】:

  • 谢谢。我在 df.to_csv 的末尾添加了 mode = 'a' 参数,但我仍然遇到同样的问题。当它等于'a'时,模式函数在做什么?等等,这行得通。我将 df 添加回 for 循环,现在我正在获取所有数据。感谢您的帮助。
  • mode参数告诉如何写入CSV;默认为w 模式,每次写入(覆盖/创建)一个新文件,将模式设置为a 将在文件末尾追加数据,而不是覆盖现有文件。但是将其保存在数据帧中并在循环外的一个操作中写入将减少写入操作,您也不必担心模式或标头处理。
猜你喜欢
  • 2015-01-22
  • 1970-01-01
  • 2018-12-17
  • 2019-04-13
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2013-01-30
相关资源
最近更新 更多