np.savetxt样式为pandas DataFrame.to_csv提供了很好的列表输出

时间:2014-11-08 00:06:03

标签: csv numpy pandas

我脱掉了一些头发,但仍无法获得精美的表格输出。

总之,我希望.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"
  1. 标题不会自动对齐。
  2. 引号扰乱了等宽流量。
  3. 我尝试将quoting设置为某些csv.QUOTE_MINIMAL,这些savetxt(format='%10.2g')基本上是整数但没有运气。据我所知,NumPy可以使用{{1}}轻松完成此操作。

    我错过了什么?

2 个答案:

答案 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('^', '')