小智 439
您可以在pandas to_csv函数中指定python写入模式.如果附加它是'a'.
在你的情况下:
df.to_csv('my_csv.csv', mode='a', header=False)
Run Code Online (Sandbox Code Playgroud)
默认模式为"w".
And*_*den 246
您可以通过以附加模式打开文件来附加到csv :
with open('my_csv.csv', 'a') as f:
df.to_csv(f, header=False)
Run Code Online (Sandbox Code Playgroud)
如果这是您的CSV, foo.csv:
,A,B,C
0,1,2,3
1,4,5,6
Run Code Online (Sandbox Code Playgroud)
如果你读了然后追加,例如df + 6:
In [1]: df = pd.read_csv('foo.csv', index_col=0)
In [2]: df
Out[2]:
A B C
0 1 2 3
1 4 5 6
In [3]: df + 6
Out[3]:
A B C
0 7 8 9
1 10 11 12
In [4]: with open('foo.csv', 'a') as f:
(df + 6).to_csv(f, header=False)
Run Code Online (Sandbox Code Playgroud)
foo.csv 变为:
,A,B,C
0,1,2,3
1,4,5,6
0,7,8,9
1,10,11,12
Run Code Online (Sandbox Code Playgroud)
Dev*_*cie 26
with open(filename, 'a') as f:
df.to_csv(f, header=f.tell()==0)
Run Code Online (Sandbox Code Playgroud)
KCz*_*zar 18
我使用一个小帮助函数与一些标题检查安全措施来处理它:
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)
Run Code Online (Sandbox Code Playgroud)
最初从 pyspark 数据帧开始 - 考虑到我的 pyspark 数据帧中的架构/列类型,我遇到了类型转换错误(当转换为 pandas df 然后附加到 csv 时)
通过强制每个 df 中的所有列均为字符串类型,然后将其附加到 csv 中,解决了该问题,如下所示:
with open('testAppend.csv', 'a') as f:
df2.toPandas().astype(str).to_csv(f, header=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200737 次 |
| 最近记录: |