如何解决pandas用pivot_table重塑dataframe长表转宽表失败问题
问题排查与解决方案
核心问题点
- 原始数据
question列存在大小写不一致:第4行值为大写开头的Question B,其余对应行是小写开头的question B,会被识别为两个不同的列,无法合并 pivot_table默认聚合函数为mean(均值计算),仅适用于数值类型,你的comment列是字符串类型,默认计算会返回空值,需要手动指定聚合规则
修复代码
方案1:使用pivot_table(适用于存在重复分组的场景)
# 统一question列的大小写规则,避免重复列 data['question'] = data['question'].str.lower() # 指定聚合函数取分组首个值 res = pd.pivot_table( data, values='comment', index=['ID', 'Name'], columns='question', aggfunc='first' ).reset_index()
方案2:使用pivot(适用于ID+Name+question无重复的场景)
data['question'] = data['question'].str.lower() res = data.pivot( index=['ID', 'Name'], columns='question', values='comment' ).reset_index()
执行后即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者John Taylor
相关产品推荐
相关产品推荐

