Pandas DataFrame格式化

4 投票
1 回答
3630 浏览
提问于 2025-04-18 05:50

我有一个包含混合值的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

撰写回答