熊猫to_csv参数float_format转换为百分比

时间:2018-12-04 19:58:33

标签: python pandas numpy floating-point export-to-csv

我试图输出一个熊猫数据框,但我希望它以百分比形式输出浮点数。我已经对此进行了大量搜索,并且可以使它们在输出中以浮点形式显示,就像我想使用

一样
pd.options.display.float_format = '{:,.2%}'.format

但是我想要做的是完全相同的事情,除了使用.to_csv方法导出到.csv时。

示例代码:

df2 = pd.DataFrame(data = {'Index': ['One', 'Two'], 'col1': [.1, .2], 'col2': [.3, .4], 'col3': [1, 7]})
df2.set_index('Index')

df:

    col1    col2    col3
Index           
One 0.1     0.3     1
Two 0.2     0.4     7

col1和col2为float64,col3为整数

我想使用以下内容(或类似的东西):

dfs.to_csv("filelocation and name.csv", float_format = '{:.2%}'.format)

输出为如下所示的.csv:

    col1    col2    col3
Index           
One 10%     30%     1
Two 20%     40%     7

任何帮助将不胜感激。我遇到了以下错误:“ TypeError:不支持的格式字符串传递给numpy.ndarray._ _格式_ _”到“ KeyError:'%'”,并且之间存在一些错误。

1 个答案:

答案 0 :(得分:0)

您可以访问float_format来格式化csv文件中的输出,但这仅是string,这意味着您可以格式化列,但不能对其进行操作。例如

with open('foo.csv', 'w') as f:
    df2.to_csv(f, index = False, header = True, float_format = '%.2f%%')

将创建此输出

Index,col1,col2,col3
One,0.10%,0.30%,1
Two,0.20%,0.40%,7

如果要更改值,建议您在输出之前更新数据框

df2 = pandas.DataFrame(data = {'Index': ['One', 'Two'], 'col1': [.1, .2], 'col2': [.3, .4], 'col3': [1, 7]})
df2.set_index('Index')

df2['col1'] *= 100
df2['col2'] *= 100

with open('foo.csv', 'w') as f:
    df2.to_csv(f, index = False, header = True, float_format = '%.2f%%')