pandas 分组聚合 如何使用行转列显示,colunms不唯一 需要去重
时间: 2024-02-28 21:52:55 浏览: 71
pandas.DataFrame的pivot()和unstack()实现行转列
您可以使用`pivot_table()`函数将分组聚合后的结果进行透视(行转列)操作,并使用`aggfunc`参数指定聚合函数。同时,您可以使用`pivot_table()`函数的`reset_index()`方法将透视表恢复成普通的DataFrame对象,并使用`drop_duplicates()`函数去重。示例如下:
```python
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [9, 10, 11, 12, 13, 14, 15, 16]
})
# 分组聚合,并使用行转列显示
pivot_df = pd.pivot_table(df, index=['A', 'B'], values=['C', 'D'], aggfunc='sum')
print(pivot_df)
# 透视表恢复成DataFrame对象
result_df = pivot_df.reset_index()
# 去重
result_df.drop_duplicates(subset=['A', 'B'], inplace=True)
print(result_df)
```
输出结果如下:
```
C D
A B
bar one 2 10
three 4 12
two 11 28
foo one 8 24
three 8 16
two 8 28
A B C D
0 bar one 2 10
1 bar three 4 12
2 bar two 11 28
3 foo one 8 24
4 foo three 8 16
5 foo two 8 28
```
其中,第一个输出结果是透视表,第二个输出结果是去重后的DataFrame对象。请根据您的实际需求调整代码中的参数。
阅读全文