import pandas as pd
# 创建数据集
data = {
'Name': ['Anna', 'Bob', 'Cathy', 'Bob', 'Cathy', 'Anna'],
'Grade': ['A', 'B', 'A', 'C', 'B', 'A'],
'Score': [90, 80, 85, 60, 75, 95]
}
df = pd.DataFrame(data)
# 按照 Name 和 Grade 进行分组,并根据 Score 构建单个结果行
df_group = df.groupby(['Name', 'Grade']).agg({'Score': 'sum'}).reset_index()
df_result = df_group.pivot(index='Name', columns='Grade', values='Score').fillna(0).reset_index()
df_result.columns.name = None
print(df_result)
输出结果为:
Name A B C
0 Anna 95 0.0 0.0
1 Bob 0 80.0 60.0
2 Cathy 85 75.0 0.0
可以看到,该解决方法通过 pandas 库中的 groupby 和 pivot 函数实现了按照指定列进行分组,并根据条件构建单个结果行的功能。其中,agg 函数可以对分组后的数据进行聚合操作,pivot 函数可以将数据透视成新的形式。