我想知道如何将新的DataFrame数据添加到现有csv文件的末尾? to_csv没有提到这样的功能。先感谢您。
答案 0 :(得分:52)
您可以通过传递to_csv
的文件
with open(file_name, 'a') as f:
df.to_csv(f, header=False)
使用header=None
,以便不附加列名称。
事实上,pandas有一个包装器可以使用to_csv
参数(see Joe's answer)在mode
中执行此操作:
df.to_csv(f, mode='a', header=False)
答案 1 :(得分:35)
您还可以将文件模式作为参数传递给to_csv方法
df.to_csv(file_name, header=False, mode = 'a')
答案 2 :(得分:3)
我使用的一个小辅助函数(基于Joe Hooper的答案)和一些标题检查保护措施来处理它:
def appendDFToCSV_void(df, csvFilePath, sep=","):
import os
if not os.path.isfile(csvFilePath):
df.to_csv(csvFilePath, mode='a', index=False, sep=sep)
elif len(df.columns) != len(pd.read_csv(csvFilePath, nrows=1, sep=sep).columns):
raise Exception("Columns do not match!! Dataframe has " + str(len(df.columns)) + " columns. CSV file has " + str(len(pd.read_csv(csvFilePath, nrows=1, sep=sep).columns)) + " columns.")
elif not (df.columns == pd.read_csv(csvFilePath, nrows=1, sep=sep).columns).all():
raise Exception("Columns and column order of dataframe and csv file do not match!!")
else:
df.to_csv(csvFilePath, mode='a', index=False, sep=sep, header=False)
答案 3 :(得分:2)
感谢Andy,完整的解决方案:
f = open(filename, 'a') # Open file as append mode
df.to_csv(f, header = False)
f.close()