您可以通过传递在附加模式下打开的文件,使用将其附加到\u csv
:
with open(file_name, 'a') as f:
df.to_csv(f, header=False)
使用header=None
,以免附加列名。
事实上,pandas有一个包装器,可以使用模式
参数在to_csv
中实现这一点(参见Joe的答案):
df.to_csv(f, mode='a', header=False)
您还可以将文件模式作为参数传递给to_csv方法
df.to_csv(file_name, header=False, mode = 'a')
我使用的一个小助手功能(基于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)