Pandas合并DataFrame后遍历列报TypeError如何修复?
问题原因
你的推测完全正确,报错的核心原因是合并后DataFrame的列名类型不统一:
df_y的列是你手动重命名的字符串类型df_x原生是二级列索引(MultiIndex),join操作后这部分列名被保留为元组类型
遍历列时如果对列名做字符串拼接操作,就会触发字符串和元组无法拼接的类型错误。
修复方案
你只需要在合并前把df_x的二级列索引转成和df_y格式一致的字符串单级列即可,既可以保留你要的(指标, 指数代码)命名格式,也能消除告警和报错:
- 先转换
df_x的列索引
# 将二级MultiIndex拼接为指定格式的字符串,统一列名类型 df_x.columns = [f'({col_level1}, {col_level2})' for col_level1, col_level2 in df_x.columns]
- 再执行join操作即可
df = df_y.join(df_x)
如果已经完成了合并不想重新跑流程,也可以直接处理现有df的列名:
df.columns = [ col if isinstance(col, str) else f'({col[0]}, {col[1]})' for col in df.columns ]
处理完成后所有列名都是统一的字符串类型,格式和你之前打印的显示效果完全一致,遍历列做字符串操作不会再报错。
内容的提问来源于stack exchange,提问作者Archie Macfarlane
相关产品推荐
相关产品推荐

