我想将我的DataFrame写入CSV文件。结果如下所示。行彼此不对齐。你有什么建议可以解决这个问题吗?
代码:
dataframe.to_csv(data,sep="",index=False,header=False,encoding='ascii',
float_format='%10.4f',quoting=csv.QUOTE_NONE, escapechar=" ", mode='a+')
file.csv的内容:
++++++++++++++++++++++++ C1 c2 c3 c2 1 1.111 1.111 1.111 2 23.261 1.111 1.111 3 138.383 1.111 1.111 2 228.717 1.111 1.111 5 358.225 1.111 1.111 6 268.173 1.111 1.111 7 577.311 1.111 1.111 8 687.623 1.111 1.111 3 737.357 1.111 1.111 11 317.185 1.111 1.111 11 1116.813 1.111 1.111 12 1126.521 1.111 1.111 13 1151.325 1.111 1.111 22 2273.853 1.111 1.111 23 2583.581 1.111 1.111 22 2618.822 1.111 1.111 25 1.111 1.111 23.261 26 23.261 1.111 23.261 27 138.383 1.111 23.261 28 228.717 1.111 23.261 23 358.225 1.111 23.261
csv文件不应该以这种方式垂直对齐。它们应该用逗号分隔值。你似乎想要格式很好的ascii。
print dataframe.__repr__()
C1 c2 c3 c2.1
0 1 1.111 1.111 1.111
1 2 23.261 1.111 1.111
2 3 138.383 1.111 1.111
3 2 228.717 1.111 1.111
4 5 358.225 1.111 1.111
5 6 268.173 1.111 1.111
6 7 577.311 1.111 1.111
7 8 687.623 1.111 1.111
8 3 737.357 1.111 1.111
9 11 317.185 1.111 1.111
10 11 1116.813 1.111 1.111
11 12 1126.521 1.111 1.111
12 13 1151.325 1.111 1.111
13 22 2273.853 1.111 1.111
14 23 2583.581 1.111 1.111
15 22 2618.822 1.111 1.111
16 25 1.111 1.111 23.261
17 26 23.261 1.111 23.261
18 27 138.383 1.111 23.261
19 28 228.717 1.111 23.261
20 23 358.225 1.111 23.261
要么:
with open('./filename.txt', 'w') as fo:
fo.write(dataframe.__repr__())
使用分隔符选项卡:
dataframe.to_csv(data,sep="\t",index=False,header=False,encoding='ascii',
float_format='%10.4f',quoting=csv.QUOTE_NONE, escapechar=" ", mode='a+')
这可以通过固定位数和列标题的宽度来完成。
以下是如何修复列标题中的字符数。 (这里固定为10)
for name in df.columns:
df.rename(columns={name: "{:10}".format(name)}, inplace=True)
编写csv文件时指定数字的格式。
df.to_csv(<path>, float_format='%0.4e')
这种方法的唯一问题是,不可能为不同的列指定不同的格式。