当列具有混合类型时如何格式化 pandas 样式器?

How to format pandas styler when column has mixed types?

我试图格式化 pandas 数据框样式器对象,但该列具有混合数据类型,我无法格式化数字。

MWE

import pandas as pd
df = pd.DataFrame({0: ['age',200000,300000.54321],1: ['city',200000,'']},
                  index=['feature','N','mean'])
df
df.style.format({0:".2f”})

                    0       1
feature           age    city
N              200000  200000
mean     300000.54321 

必填

        0       1
feature age     city
N       200,000 200000
mean    300,000.54  

默认格式化程序实际上分别处理字符串、float/complex 和 int。所以你只需要给出必要的参数:

df = pd.DataFrame({0: ['age',200000,300000.54321],1: ['city',200000,'']},
                  index=['feature','N','mean'])
df.style.format(thousands=",", precision=2, subset=[0])

           0    1
feature  age    city
N       200,000 200000
mean    300,000.54  

或者您可以编写自己的格式化程序,但这实际上是在复制 pandas 默认格式化程序:

def func(v):
    if isinstance(v, (float, complex)):
        return "{:,.2f}".format(v)
    elif isinstance(v, int):
        return "{:,.0f}".format(v)
    return v

df.style.format({0: func})
           0    1
feature  age    city
N       200,000 200000
mean    300,000.54