如何正确调整pandas DataFrame的pivot操作得到单级表头单行结果
解决方法
你遇到的问题来源于pivot参数配置缺失,可按以下步骤调整:
首先先将answers列的单元素列表提取为标量,避免结果中出现列表格式的取值:
df['answers'] = df['answers'].str[0]
方案1:用pivot正确配置参数实现
给所有行指定同一个虚拟索引,同时明确指定values参数避免生成两级表头:
res = df.pivot( index=[0]*len(df), # 所有行归到同一个索引下,最终只会生成1行 columns='questionId', values='answers' ).reset_index(drop=True) # 删掉多余的虚拟索引列
方案2:用set_index+转置更简洁实现
res = df.set_index('questionId')['answers'].to_frame().T.reset_index(drop=True)
原代码问题说明
- 未指定
index参数:pandas默认沿用原DataFrame的行索引,6条原数据会生成6行,除了对应questionId的位置外其他都是空值- 未指定
values参数:pandas会将除columns参数外的剩余列作为上层表头,生成answers + questionId的两级结构
内容的提问来源于stack exchange,提问作者python_enthusiast
相关产品推荐
相关产品推荐

