簡體   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