【问题标题】:Easy way to add thousand separator to numbers in Python pandas DataFrame在 Python pandas DataFrame 中为数字添加千位分隔符的简单方法
【发布时间】:2017-05-17 18:34:21
【问题描述】:

假设我有一个 pandas 数据框,我想为所有数字(整数和浮点数)添加千位分隔符,有什么简单快捷的方法?

【问题讨论】:

    标签: python pandas number-formatting separator


    【解决方案1】:

    使用, 格式化数字时,您可以使用'{:,}'.format:

    n = 10000
    print '{:,}'.format(n)
    n = 1000.1
    print '{:,}'.format(n)
    

    在 pandas 中,您可以将formatters 参数用于to_html,如here 所述。

    num_format = lambda x: '{:,}'.format(x)
    def build_formatters(df, format):
        return {
            column:format 
            for column, dtype in df.dtypes.items()
            if dtype in [ np.dtype('int64'), np.dtype('float64') ] 
        }
    formatters = build_formatters(data_frame, num_format)
    data_frame.to_html(formatters=formatters)
    

    添加千位分隔符实际上已经在 stackoverflow 上讨论了很多。你可以阅读here或here。

    【讨论】:

    • 它不适用于具有整数的数据框。仅适用于浮动
    【解决方案2】:

    假设您只想显示(或呈现为 html)带有千位分隔符的浮点数/整数,您可以使用 0.17.1 版中添加的 styling:

    import pandas as pd
    df = pd.DataFrame({'int': [1200, 320], 'flt': [5300.57, 12000000.23]})
    
    df.style.format('{:,}')
    

    要将此输出呈现为 html,请使用 Styler 上的 render 方法。

    【讨论】:

      【解决方案3】:

      将Series.map 或Series.apply 与此solutions 一起使用:

      df['col'] = df['col'].map('{:,}'.format)
      df['col'] = df['col'].map(lambda x: f'{x:,}')
      

      df['col'] = df['col'].apply('{:,}'.format)
      df['col'] = df['col'].apply(lambda x: f'{x:,}')
      

      【讨论】:

        【解决方案4】:

        如果你想要“。”作为千位分隔符和“,”作为小数分隔符,这将起作用:

        Data = pd.read_Excel(path)

        Data[my_numbers] = Data[my_numbers].map('{:,.2f}'.format).str.replace(",", "~").str.replace(".", ",").str.replace("~", ".")

        如果你想要三个小数而不是两个小数,你可以改变 "2f" --> "3f"

        Data[my_numbers] = Data[my_numbers].map('{:,.3f}'.format).str.replace(",", "~").str.replace(".", ",").str.replace("~", ".")

        【讨论】:

          【解决方案5】:

          步骤

          • 使用df.applymap() 将函数应用于数据框中的每个单元格
          • 检查单元格值是否为int 或float 类型
          • 使用f'{x:,d}' 为整数和f'{x:,f}' 为浮点数格式化数字

          这是一个仅适用于整数的简单示例:

          df = df.applymap(lambda x: f'{x:,d}' if isinstance(x, int) else x)
          

          【讨论】:

            【解决方案6】:

            to_html 中的 formatters 参数将采用字典。

            Click the example link for reference

            【讨论】:

              猜你喜欢
              • 2012-04-02
              • 2021-04-19
              • 2013-02-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-10-25
              • 2013-09-25
              相关资源
              最近更新 更多