繁体   English   中英

如何将 pandas dataframe 转换为每列不同格式的 CSV 格式?

[英]How can I get a pandas dataframe into CSV format with different formats per columns?

熊猫 DataFrame 文本 output 函数的问题:

  • to_csv() 不支持 to_string() 的“格式化程序”参数。 我需要为每一列使用不同的格式。
  • to_string() 不支持分隔符。

到目前为止我做了什么:

我以新的 Python 格式化格式生成格式化字符串列表,例如['{8.1f}','{9.3f}',...,] ,然后执行以下操作:

f.write(', '.join(fmt).format(*data)+'\r\n')

有没有办法让 pandas 为我做一些黑客攻击,或者这是一个功能请求,我已经完成了所有工作? ;)

np.savetxt可以做到(通过提供fmt参数,它可以是一个list ),但这意味着必须单独编写列名( header参数):

np.savetxt('temp.csv', df.values, fmt=['%8.1f','%9.3f','%8.1f','%9.3f','%8.1f'], 
           delimiter=',', header='     '+'     ,'.join(df.columns), comments='')

你可以试试这个:

import pandas as pd

df = pd.DataFrame({
    'a': [-8.114445, 888.303217, 80],
    'b': ['d', 'gg5g', '9ghhhh'],
    'c': [14.34e+4,12.1e-1,1e-5],
    'd': [34,65373,-176576]}
)

df.to_string("temp.txt",
            formatters={
                "a": "{:6,.2f}".format,
                "b": "{:<}".format,
                "c": "{:9,.5e}".format,
                "d": "{:7d}".format
                }, index=False
            )

“temp.txt”的内容:

     a      b           c       d
 -8.11      d 1.43400e+05      34
888.30   gg5g 1.21000e+00   65373
 80.00 9ghhhh 1.00000e-05 -176576

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM