无列数据透视问题:Excel导入DataFrame生成指定透视表失败
按Code分组对QTY求和的透视表实现方法
原始DataFrame结构
| Code | Material | Text | QTY |
|---|---|---|---|
| A1 | X222 | Model3 | 1 |
| A2 | 4027721 | Gruoup1 | 1 |
| A2 | 4647273 | Gruoup1.1 | 4 |
| A1 | 573828 | Gruoup1.2 | 1 |
预期结果
| Code | Qty |
|---|---|
| A1 | 2 |
| A2 | 5 |
你尝试的错误代码
df.pivot(index='Code', columns='',values='Qty') df_pivot = df ("Code").Qty([sum, max])
错误原因说明
- 第一段代码:
pivot不允许columns参数为空,且你的DataFrame列名是QTY(大写),代码里写的Qty(大小写不匹配),导致无法识别目标列。 - 第二段代码:语法错误,分组操作需要用
groupby方法,不能直接用.Qty([sum, max])这种方式调用聚合函数。
正确实现方法
方法1:使用groupby + sum(推荐)
这是最简洁直接的实现方式,分组后对QTY列求和,最后重置索引得到预期的表格结构:
# 分组求和 result = df.groupby('Code')['QTY'].sum().reset_index() # 可选:将列名从QTY改为Qty以匹配预期结果 result.rename(columns={'QTY': 'Qty'}, inplace=True)
方法2:使用pivot_table(透视表方式)
如果要严格通过透视表实现,使用pivot_table指定索引、聚合列和聚合函数:
# 创建透视表 result = df.pivot_table(index='Code', values='QTY', aggfunc='sum').reset_index() # 可选:重命名列名 result.rename(columns={'QTY': 'Qty'}, inplace=True)
内容的提问来源于stack exchange,提问作者user19613662
相关产品推荐
相关产品推荐

