通常情况下,你可能想以一种特定的方式修改或格式化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