Pandas使用pivot出现重复条目报错 如何对重复值求和生成透视表
问题原因
pivot()方法要求index和columns的组合值唯一,你提供的数据中foo=one且bar=B对应2条数据,所以触发重复索引报错。要实现带聚合逻辑的透视操作,使用pivot_table()方法即可。
实现代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ "foo": ["one", "one", "one", "two", "two", "two"], "bar": ["A", "B", "B", "A", "B", "C"], "baz": [1, 2, 3, 4, 5, 6] }) # 透视表实现,指定sum为聚合函数,缺失值填充为0 res = df.pivot_table( index="foo", columns="bar", values="baz", aggfunc="sum", fill_value=0 ).reset_index()
输出结果
运行后得到的res完全符合预期格式:
| foo | A | B | C |
|---|---|---|---|
| one | 1 | 5 | 0 |
| two | 4 | 5 | 6 |
可选替代方案
也可以用分组+行列转换的方式实现相同效果:
res = df.groupby(["foo", "bar"])["baz"].sum().unstack(fill_value=0).reset_index()
内容的提问来源于stack exchange,提问作者Andrey Lovyagin
相关产品推荐
相关产品推荐

