如何在pandas中修改数据透视表的列名

741 阅读2分钟

通常情况下,你可能想以一种特定的方式修改或格式化pandas数据透视表中的列名。

幸运的是,使用pandas中的内置函数,这很容易做到。

下面的例子展示了如何做到这一点。

例子:修改Pandas数据透视表中的列名

假设我们有如下的pandas DataFrame,其中包含各种篮球运动员的信息:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'C', 'G', 'C', 'F', 'F'],
                   'points': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
print(df)

	team	position points
0	A	G	 4
1	A	G	 4
2	A	F	 6
3	A	C	 8
4	B	G	 9
5	B	C	 5
6	B	F	 5
7	B	F	 12

我们可以使用下面的代码在pandas中创建一个透视表,显示DataFrame中每个球队位置得分平均值:

#create pivot table
piv = pd.pivot_table(df, values='points', index='team', columns='position')

#view pivot table
print(piv)

position    C    F    G
team                   
A         8.0  6.0  4.0
B         5.0  8.5  9.0

现在,假设我们想在透视表中去掉位置这个词,并从透视表中去掉多余的球队行。

我们可以使用下面的语法来做到这一点:

#format column names
piv.columns = ['_'.join(str(s).strip() for s in col if s) for col in piv.columns]

#reset index
piv.reset_index(inplace=True)

#view updated pivot table
print(piv)

  team    C    F    G
0    A  8.0  6.0  4.0
1    B  5.0  8.5  9.0

请注意,我们能够摆脱数据透视表中的单词位置,并从数据透视表中删除多余的团队行。

还要注意的是,这个一般的解决方案对带有MultiIndex的透视表也是有效的。

注意:你可以在这里找到pandaspivot_table()函数的完整文档。

其他资源

下面的教程解释了如何在pandas中执行其他常见操作:

Pandas:如何用数值计数创建透视表
Pandas:如何用零替换透视表中的NaN值
Pandas:如何将透视表转换为DataFrame