当列具有混合类型时如何格式化 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
我试图格式化 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