【问题标题】:Pandas - appending to existing csv file problemPandas - 附加到现有的 csv 文件问题
【发布时间】:2021-10-06 23:06:12
【问题描述】:

我是通过API采集数据,使用pandas.to_csv()函数,设置如下:

path, mode='a',header=False, index=False'

但是,结果很奇怪。 API 收集的第一行插入到其他列,而不是我创建的列。

如何解决这个问题?

【问题讨论】:

  • 您使用的是multiprocessing/threading 还是可以让您的脚本快速运行的东西?因为这些类型的问题会在那种情况下发生。它只是在打印数据时发生,或者输出来自某些variable
  • 其中一个写入没有写入终端换行符。但是,很难说,因为您还没有展示那么多的程序。

标签: python pandas csv append


【解决方案1】:

您在其中编写输出的文件的最后一行末尾没有换行符 (\n)。因此,在这一行的末尾添加了以下数据。

这是一个例子:

with open('/tmp/file.csv', 'w') as f:
    f.write('1,2')
pd.DataFrame([[3,4],[5,6]]).to_csv('/tmp/file.csv', mode='a', header=0, index=False)

输出:

1,23,4
5,6

您需要确保第一次写入在最后一行的末尾附加一个换行符,或者您可以使用以下方法修复您的文件:

with open('/tmp/file.csv', 'a') as f:
    f.write('\n')

就在您to_csv 出口之前。

输出:

1,2
3,4
5,6

这是修复文件的一种更聪明的方法,它会检查文件的最后一个字符是否为\n,如果不是,则追加一个:

with open('/tmp/file.csv', 'r+') as f: # open file as read/append
    f.seek(0, 2)          # go to end of file
    f.seek(f.tell()-1, 0) # come back one chacacter
    if f.read() != '\n':  # if last character is not \n
        f.write('\n')     # then append \n

【讨论】:

  • 谢谢!你的回答有助于我理解这个程序的机制!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 2014-05-03
  • 2020-11-01
  • 1970-01-01
  • 2019-06-08
  • 2020-12-27
相关资源
最近更新 更多