Pandas使用pivot_table实现行转列输出不符合预期问题求助
问题原因
你当前代码使用aggfunc=list会将同一Time+Item分组下的所有Value值封装为列表,不符合常规行转列的输出要求。
解决方案
根据你的数据场景选择对应代码即可:
- 场景1:原始数据中同一个
Time和Item组合仅对应唯一的Value值(绝大多数行转列场景属于这类)
两种写法均可实现需求:- 直接用
pivot方法,更适配无重复分组的行转列场景:
df = df.pivot(index='Time', columns='Item', values='Value').reset_index() # 可选:去掉列名的Item标识,输出更贴近常规表格 df.columns.name = None- 坚持用
pivot_table的话修改聚合函数即可:
df = df.pivot_table(index='Time', columns='Item', values='Value', aggfunc='first').reset_index() df.columns.name = None - 直接用
- 场景2:同一个
Time和Item组合对应多个Value值
根据你的聚合需求替换aggfunc参数即可,常见需求示例:- 对多个Value求和:
aggfunc='sum' - 对多个Value求平均值:
aggfunc='mean' - 把多个Value用逗号拼接为字符串:
aggfunc=lambda x: ','.join(x.astype(str))
- 对多个Value求和:
内容的提问来源于stack exchange,提问作者nmp
相关产品推荐
相关产品推荐

