假设我们有以下 DataFrame:
import pandas as pd
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
'Color': ['Red', 'Green', 'Blue', 'Red', 'Green', 'Blue'],
'Amount': [10, 20, 30, 5, 15, 25]})
print(df)
Name Color Amount
0 Alice Red 10
1 Bob Green 20
2 Charlie Blue 30
3 Alice Red 5
4 Bob Green 15
5 Charlie Blue 25
为了按 Name 和 Color 列进行分组和透视,我们可以使用 pivot_table() 函数。首先,我们可以将 DataFrame 按照 Name 和 Color 列分组,并且计算每组中 Amount 列的总和:
table = df.groupby(['Name', 'Color'])['Amount'].sum().reset_index()
print(table)
Name Color Amount
0 Alice Red 15
1 Bob Green 35
2 Charlie Blue 55
现在,我们可以使用 pivot_table() 函数将 Name 列作为行索引,Color 列作为列索引,Amount 列作为值,并且使用 sum 函数聚合每组的值:
result = table.pivot_table(index='Name', columns='Color', values='Amount', aggfunc='sum')
print(result)
Color Blue Green Red
Name
Alice NaN NaN 15.0
Bob NaN 35.0 NaN
Charlie 55.0 NaN NaN
输出结果显示了不同颜色的总和,以及每个名称的总和。NaN 值表示没有匹配的项。
下一篇:按不同模型对对象进行分组