您可以格式化 pandas 整数以供显示,例如用于浮点数的 \`pd.options.display.float_format\` 吗?

新手上路,请多包涵

我已经看到 这个这个 关于格式化 浮点数 以在熊猫中显示的内容,但我有兴趣对 整数 做同样的事情。

现在,我有:

 pd.options.display.float_format = '{:,.2f}'.format

这适用于我数据中的浮点数,但要么在转换为浮点数的整数上留下烦人的尾随零,要么我将使用不使用逗号格式化的纯整数。

pandas 文档提到了一个 SeriesFormatter 类,我找不到任何相关信息。

或者,如果有一种方法可以编写单个字符串格式化程序,将浮点数格式化为 '{:,.2f}' 并将尾随小数点为零的浮点数格式化为 '{:,d}' ,那也行得通。

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

阅读 415
2 个回答

从 Pandas 1.3.0 开始,您可以指定 df.style.format(thousands=',') 使用逗号分隔浮点数、复数和整数中的千位。

请参阅: https ://pandas.pydata.org/docs/reference/api/pandas.io.formats.style.Styler.format.html。

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

你可以猴子补丁 pandas.io.formats.format.IntArrayFormatter

 import contextlib
import numpy as np
import pandas as pd
import pandas.io.formats.format as pf
np.random.seed(2015)

@contextlib.contextmanager
def custom_formatting():
    orig_float_format = pd.options.display.float_format
    orig_int_format = pf.IntArrayFormatter

    pd.options.display.float_format = '{:0,.2f}'.format
    class IntArrayFormatter(pf.GenericArrayFormatter):
        def _format_strings(self):
            formatter = self.formatter or '{:,d}'.format
            fmt_values = [formatter(x) for x in self.values]
            return fmt_values
    pf.IntArrayFormatter = IntArrayFormatter
    yield
    pd.options.display.float_format = orig_float_format
    pf.IntArrayFormatter = orig_int_format

df = pd.DataFrame(np.random.randint(10000, size=(5,3)), columns=list('ABC'))
df['D'] = np.random.random(df.shape[0])*10000

with custom_formatting():
    print(df)

产量

      A     B     C        D
0 2,658 2,828 4,540 8,961.77
1 9,506 2,734 9,805 2,221.86
2 3,765 4,152 4,583 2,011.82
3 5,244 5,395 7,485 8,656.08
4 9,107 6,033 5,998 2,942.53

而在 with-statement 之外:

 print(df)

产量

      A     B     C            D
0  2658  2828  4540  8961.765260
1  9506  2734  9805  2221.864779
2  3765  4152  4583  2011.823701
3  5244  5395  7485  8656.075610
4  9107  6033  5998  2942.530551

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

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