当列具有混合类型时,如何设置样式器的格式?

2024-06-30 14:55:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图格式化pandas dataframe styler对象,但该列具有混合数据类型,因此无法格式化数字

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  


Tags: 对象importcitydataframepandasdfageas
1条回答
网友
1楼 · 发布于 2024-06-30 14:55:39

默认的格式化程序实际上分别处理string、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  

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

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  

相关问题 更多 >