如何将DataFrame按多列分组,将指定列的值转换为新列
你需要的是行按Name、Fruits分组,列按Date展开的交叉聚合表,两种实现方式如下:
方法1:使用pivot_table(更直观)
直接通过透视表指定行、列、聚合值即可:
import pandas as pd output = pd.pivot_table( dt, index = ['Name', 'Fruits'], columns = 'Date', values = 'QTY', aggfunc = 'sum', fill_value = 0 # 无匹配数据的单元格默认填充0,可删除该参数保留NaN ).reset_index() # 若需要将Name、Fruits从索引转为普通列则保留该行
方法2:调整现有groupby逻辑
你之前的写法只按Name、Fruits分组,没有包含Date维度,补充后加unstack即可实现列转行:
output = dt.groupby(['Name', 'Fruits', 'Date'])['QTY'].sum().unstack(fill_value=0).reset_index()
如果需要导出到Excel文件,追加下述代码即可:
output.to_excel('输出结果.xlsx', index=False)
内容的提问来源于stack exchange,提问作者Rynx Yee
相关产品推荐
相关产品推荐

