格式化/抑制 Pandas 聚合结果的科学记数法

新手上路,请多包涵

如何修改 pandas 中的 groupby 操作的输出格式,该操作为非常大的数字生成科学记数法?

我知道如何在 python 中进行字符串格式化,但是在这里应用它时我不知所措。

 df1.groupby('dept')['data1'].sum()

dept
value1       1.192433e+08
value2       1.293066e+08
value3       1.077142e+08

如果我转换为字符串,这会抑制科学记数法,但现在我只是想知道如何格式化字符串和添加小数。

 sum_sales_dept.astype(str)

原文由 horatio1701d 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 700
2 个回答

当然,我在评论中链接的答案不是很有帮助。您可以像这样指定自己的字符串转换器。

 In [25]: pd.set_option('display.float_format', lambda x: '%.3f' % x)

In [28]: Series(np.random.randn(3))*1000000000
Out[28]:
0    -757322420.605
1   -1436160588.997
2   -1235116117.064
dtype: float64

我不确定这是否是执行此操作的首选方式,但它确实有效。

纯粹出于审美目的将数字转换为字符串似乎是个坏主意,但如果你有充分的理由,这是一种方法:

 In [6]: Series(np.random.randn(3)).apply(lambda x: '%.3f' % x)
Out[6]:
0     0.026
1    -0.482
2    -0.694
dtype: object

原文由 Dan Allan 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是另一种方法,类似于 Dan Allan 的回答,但没有 lambda 函数:

 >>> pd.options.display.float_format = '{:.2f}'.format
>>> Series(np.random.randn(3))
0    0.41
1    0.99
2    0.10

要么

>>> pd.set_option('display.float_format', '{:.2f}'.format)

原文由 tfhans 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题