Pandas DataFrame格式化
我有一个包含混合值的pandas数据框(DataFrame)。我在Ipython笔记本中开发这个数据框。当我显示这个数据框时,我希望它能更容易阅读。目前,我使用Python的字符串格式化功能,把所有的浮点数显示为四位小数,并添加千位分隔符。
pd.options.display.float_format = '{:,.4f}'.format
理想情况下,我希望能做到,比如说:把大于10000的数值显示为整数,不显示小数;把分数显示为四位有效数字等等。请问有没有办法使用Python的字符串格式化语法来实现这个?我知道可以对单独的列进行设置,但我想在笔记本中仅仅为了显示效果来做到这一点。
1 个回答
6
你可以把一个函数传递给 float_format
,所以可以传入任何东西。
In [1]:
df = DataFrame(dict(A = [1.2345,10000.12345,1]))
df
Out[1]:
A
0 1.23450
1 10000.12345
2 1.00000
3 rows × 1 columns
In [4]:
pd.set_option('display.float_format',
lambda x: '{:,.4f}'.format(x) if abs(x) < 10000 else '{:,.0f}'.format(x))
In [5]:
df
Out[5]:
A
0 1.2345
1 10,000
2 1.0000
3 rows × 1 columns