设置数据框写入Excel时浮点数的数字格式



我有一个脚本生成多个表处理到一个数据库,但有严格的数字格式的某些列在我的数据框架。

我已经创建了一个基于列标题和数字格式所需的示例字典和一个示例df.

import pandas as pd
df_int_headers=['GrossRevenue', 'Realisation', 'NetRevenue']
df={'ID': [654398,456789],'GrossRevenue': [3.6069109,7.584326], 'Realisation': [1.5129510,3.2659478], 'NetRevenue': [2.0939599,4.3183782]}
df_formats = {'GrossRevenue': 3, 'Realisation': 6, 'NetRevenue': 4}
df=pd.DataFrame.from_dict(df)
def formatter(header):
for key, value in df_formats.items():
for head in header:
return header.round(value).astype(str).astype(float)
df[df_int_headers] = df[df_int_headers].apply(formatter)
df.to_excel('test.xlsx',index=False)

当使用当前代码时,所有列号格式返回为3 .d.p。在我的Excel表格中,而我需要不同的格式为每一列。

期待您的回复。

对于我来说,将字典传递到DataFrame.round,对于您的原始键值'NetRevenue': 4只返回3值,我认为最终应该删除0,因为数字:

df={'ID': 654398,'GrossRevenue': 3.6069109, 
'Realisation': 1.5129510, 'NetRevenue': 2.0939599}
df = pd.DataFrame(df, index=[0])
df_formats = {'GrossRevenue': 3, 'Realisation': 6, 'NetRevenue': 5}
df_int_headers = list(df_formats.keys())
df[df_int_headers] = df[df_int_headers].round(df_formats)

相关内容

最新更新