使用自动宽度打印到CSV文件

时间:2013-08-25 03:34:26

标签: python csv pandas

Pandas有没有办法将DataFrame写入csv文件,其中列宽自动调整? (即类似于Pandas在向屏幕打印DataFrame时所做的事情)

如果我这样做

df.to_csv(string_buf, sep = ' ', Index=False)
print(string_buf.getvalue())

我明白了:

 column1 column2 column3
0 4 james matching68 -100
1 44 george foo -500
2 14 jason trinitron -400
3 1 tom trinitron -400
4 1 lukas esp -100

顺便说一下,即使我明确地禁用它也打印Index也很奇怪。

1 个答案:

答案 0 :(得分:2)

冒被称为Captain Obvious™的风险,为什么不将to_string()的结果写入文件?

with open('csv.csv', 'w') as f:
    f.write(df.to_string())

如果您不想编写索引,则可能需要使用numpy

df = DataFrame(randn(10, 3), columns=list('abc'))
values = df.values
columns = df.columns.values

with open('csv.csv', 'w') as f:
    savetxt(f, columns[newaxis], fmt='%10s')
    savetxt(f, values, fmt='%10.4f')

cat csv.csv

      a          b          c
-0.8023    -0.6464    -0.2102
-1.4442    -0.5965     1.7326
 1.5028     1.7246    -0.4788
-1.6442    -0.3962     0.1391
 1.2404     1.1226    -0.3639
-0.6567     1.3464     0.2167
 0.4928     0.2204    -0.8549
-1.0625    -0.6588    -1.0551
-0.9175    -0.5855    -0.4151