我正在使用:
df.to_csv('file.csv', header=False, mode='a')
将多个熊猫数据帧一个接一个地写入CSV文件。
我确保这些数据框具有相同的列名集。
但是,似乎列顺序将以随机顺序写入,所以我的CSV文件混乱。
如何确保新数据帧将按照先前数据的列顺序写入?
非常感谢
答案 0 :(得分:0)
我认为,如果每个DataFrame
的列名相同,则可以按列进行排序:
df.sort_index(axis=1).to_csv('file.csv', header=None, mode='a')
如果可能的话,可以使用不同的列名称来创建帮助程序变量c
并添加新列并删除重复项:
df1 = pd.DataFrame({'C':list('as'),
'B':[4,5],
'A':[7,8]})
df2 = pd.DataFrame({'D':list('as'),
'A':[4,5],
'C':[7,8]})
df3 = pd.DataFrame({'C':list('as'),
'B':[4,5],
'E':[7,8]})
c = df1.columns
#first df should be written to file same way as another df
df1.to_csv('file.csv', header=None, index=False)
c = c.append(df2.columns).drop_duplicates()
df2.reindex(columns=c).to_csv('file.csv', header=None, mode='a', index=False)
c = c.append(df3.columns).drop_duplicates()
df3.reindex(columns=c).to_csv('file.csv', header=None, mode='a', index=False)
df = pd.read_csv('file.csv', header=None, names=c)
print (df)
C B A D E
0 a 4.0 7.0 NaN NaN
1 s 5.0 8.0 NaN NaN
2 7 NaN 4.0 a NaN
3 8 NaN 5.0 s NaN
4 a 4.0 NaN NaN 7.0
5 s 5.0 NaN NaN 8.0