【问题标题】:Apply Formatting to Each Column in Dataframe Using a Dict Mapping使用字典映射将格式应用于数据框中的每一列
【发布时间】:2015-12-21 02:11:33
【问题描述】:

问题设置

import pandas as pd
df = pd.DataFrame(data={'Currency': {0: 111.23, 1: 321.23},
                   'Int': {0: 23, 1: 3},
                   'Rate': {0: 0.03030, 1: 0.09840}}
            )

产生以下数据帧

   Currency  Int    Rate
0    111.23   23  0.0303
1    321.23    3  0.0984

我想使用如下 dict 对数据框中的每一列应用非常具体的格式:

format_mapping={'Currency': '${:,.2f}', 'Int': '{:,.0f}', 'Rate': '{:.2f}%'}

我知道我可以将 applymap 用于多个列或应用于单个列:

#All columns
df = df.applymap('{:.2f}%'.format)
#Specific columns
df['Rate'] = df['Rate'].apply('{:.2f}%'.format)

问题

如何遍历数据框中的每一列并使用字典应用格式,其中dict keycolumnvaluestring 格式?

最终结果将如下所示(忽略百分比尚未乘以 100 的事实)

  Currency Int   Rate
0  $111.23  23  0.03%
1  $321.23   3  0.10%

【问题讨论】:

    标签: python dictionary pandas formatting dataframe


    【解决方案1】:

    最简单的方法是遍历format_mapping 字典,然后将value 表示的格式应用于列(由键表示)。示例 -

    for key, value in format_mapping.items():
        df[key] = df[key].apply(value.format)
    

    演示 -

    In [62]: df = pd.DataFrame(data={'Currency': {0: 111.23, 1: 321.23},
       ....:                    'Int': {0: 23, 1: 3},
       ....:                    'Rate': {0: 0.03030, 1: 0.09840}}
       ....:             )
    
    In [63]:
    
    In [63]: format_mapping={'Currency': '${:,.2f}', 'Int': '{:,.0f}', 'Rate': '{:.2f}%'}
    
    In [64]: for key, value in format_mapping.items():
       ....:     df[key] = df[key].apply(value.format)
       ....:
    
    In [65]: df
    Out[65]:
      Currency Int   Rate
    0  $111.23  23  0.03%
    1  $321.23   3  0.10%
    

    【讨论】:

      【解决方案2】:

      2021 年(Pandas 1.2.3)你可以使用df.style.format()

      import pandas as pd
      
      df = pd.DataFrame(
          data={
              "Currency": {0: 111.23, 1: 321.23},
              "Int": {0: 23, 1: 3},
              "Rate": {0: 0.03030, 1: 0.09840},
          }
      )
      format_mapping = {"Currency": "${:,.2f}", "Int": "{:,.0f}", "Rate": "{:.2f}%"}
      
      df.style.format(format_mapping)
      

      更多信息:https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html#Finer-Control:-Display-Values

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-14
        • 2018-05-03
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-13
        • 2018-04-21
        相关资源
        最近更新 更多