将数据帧显示浮点格式转换为人类可读,仅用于输出显示目的

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