我脱掉了一些头发,但仍无法获得精美的表格输出。
总之,我希望.to_csv()
方法保存的文件看起来像这样:
K0 V0 dK_dT a b
value 237.496942 82.845746 -0.037012 0.000006 1.359708e-08
std 2.094088 0.012948 0.004415 0.000001 1.550236e-09
但凭借我所能做的,print result.to_csv(float_format='%10.2g', sep=' ')
给了我:
K0 V0 dK_dT a b
value " 2.4e+02" " 83" " -0.037" " 5.8e-06" " 1.4e-08"
std " 2.1" " 0.013" " 0.0044" " 1e-06" " 1.6e-09"
我尝试将quoting
设置为某些csv.QUOTE_MINIMAL
,这些savetxt(format='%10.2g')
基本上是整数但没有运气。据我所知,NumPy可以使用{{1}}轻松完成此操作。
我错过了什么?
答案 0 :(得分:3)
而不是to_csv()
,您可以使用to_string()
。例如,
In [80]: df
Out[80]:
A B C
a 123.456789 0.702380 7.071752e-08
b 1.230000 0.323674 6.075386e-08
c 0.012300 0.621974 7.918532e-08
d 0.000000 0.818291 5.480469e-08
e -9.876543 0.117978 9.831873e-08
In [81]: txt = df.to_string()
In [82]: print txt
A B C
a 123.456789 0.702380 7.071752e-08
b 1.230000 0.323674 6.075386e-08
c 0.012300 0.621974 7.918532e-08
d 0.000000 0.818291 5.480469e-08
e -9.876543 0.117978 9.831873e-08
然后,您可以将txt
写入文件。
答案 1 :(得分:0)
这是一个愚蠢的伎俩:使用ASCII BEL(铃声)作为引用字符。至少在我的系统上,这根本不打印任何引号:
result.to_csv(float_format='%10.2g', sep=' ', index=False, quotechar='\a')
或者使用虚拟角色并在最后替换它:
ss = result.to_csv(float_format='%10.2g', sep=' ', index=False, quotechar='^')
print ss.replace('^', '')