将数据帧显示浮点格式转换为人类可读,仅用于输出显示目的
Convert dataframe display float format to human readable for output display purpose only
我希望以人类可读的格式显示数据框列值,例如 10、100、1K、1M、1B 等
到目前为止,我可以使用带有以下参数的 pandas 选项将科学值(例如)1.111111e1 转换为数字浮点格式:
`display.float_format = '{:.2f}'.format
注意,上一行中的2表示小数点后2点。随心所欲地改变它们。
但是,当该列具有如此多不同的数值时,输出仍然很难阅读。特别是在金融用例中,有货币、营业额、利润等列
如何操作?
注意:我不想将存储的值转换成字符串格式。我对列值进行了计算,所以这是不可行的。此外,我不会为显示目的创建新的列。所以,df['new_col'] = df['col']/1000000
也不行。
示例数据框:
pd.DataFrame([10.,100.,1000.,10000.,100000.,1000000.,10000000.,100000000.,1000000000.,10000000000.])
0 1.000000e+01
1 1.000000e+02
2 1.000000e+03
3 1.000000e+04
4 1.000000e+05
5 1.000000e+06
6 1.000000e+07
7 1.000000e+08
8 1.000000e+09
9 1.000000e+10
在 pandas 选项 方法中使用带有 display.float_format
参数的以下函数来获得所需的结果。
lambda x : '{:.2f}'.format(x) if abs(x) < 1000 else ('{:.2f} K'.format(x/1000) if abs(x) < 1000000 else ('{:.2f} M'.format(x/1000000) if abs(x) < 1000000000 else '{:.2f} B'.format(x/1000000000)))
输出:
0 10.00
1 100.00
2 1.00 K
3 10.00 K
4 100.00 K
5 1.00 M
6 10.00 M
7 100.00 M
8 1.00 B
9 10.00 B
我希望以人类可读的格式显示数据框列值,例如 10、100、1K、1M、1B 等
到目前为止,我可以使用带有以下参数的 pandas 选项将科学值(例如)1.111111e1 转换为数字浮点格式:
`display.float_format = '{:.2f}'.format
注意,上一行中的2表示小数点后2点。随心所欲地改变它们。
但是,当该列具有如此多不同的数值时,输出仍然很难阅读。特别是在金融用例中,有货币、营业额、利润等列
如何操作?
注意:我不想将存储的值转换成字符串格式。我对列值进行了计算,所以这是不可行的。此外,我不会为显示目的创建新的列。所以,df['new_col'] = df['col']/1000000
也不行。
示例数据框:
pd.DataFrame([10.,100.,1000.,10000.,100000.,1000000.,10000000.,100000000.,1000000000.,10000000000.])
0 1.000000e+01
1 1.000000e+02
2 1.000000e+03
3 1.000000e+04
4 1.000000e+05
5 1.000000e+06
6 1.000000e+07
7 1.000000e+08
8 1.000000e+09
9 1.000000e+10
在 pandas 选项 方法中使用带有 display.float_format
参数的以下函数来获得所需的结果。
lambda x : '{:.2f}'.format(x) if abs(x) < 1000 else ('{:.2f} K'.format(x/1000) if abs(x) < 1000000 else ('{:.2f} M'.format(x/1000000) if abs(x) < 1000000000 else '{:.2f} B'.format(x/1000000000)))
输出:
0 10.00
1 100.00
2 1.00 K
3 10.00 K
4 100.00 K
5 1.00 M
6 10.00 M
7 100.00 M
8 1.00 B
9 10.00 B