合并同名列DataFrame时,df.columns返回元组列表而非字符串列表求助
解决DataFrame列返回单元素元组列表的问题
问题根源
你的DataFrame列是MultiIndex(多级索引),哪怕只有一级维度,调用columns.to_list()时也会返回单元素元组的列表,而非预期的字符串列表。这种情况通常出现在合并DataFrame时——比如用pd.concat指定了keys参数,或合并逻辑默认生成了多级索引。
快速修复方案
1. 直接将MultiIndex转为普通索引
如果确认列只有一级层级,提取该层级的列名覆盖原索引:
# 提取第0层级的列名作为新的列索引 df.columns = df.columns.get_level_values(0) # 此时调用to_list就会返回字符串列表 col_names = df.columns.to_list()
2. 合并时避免生成MultiIndex
既然问题源于合并操作,下次合并两个列名相同的DataFrame时,用ignore_index=True(针对pd.concat)避免生成多级索引:
merged_df = pd.concat([df1, df2], ignore_index=True)
3. 强制转换列名类型
如果前两种方法没生效,直接遍历列名,把单元素元组转为字符串:
df.columns = [col_tuple[0] for col_tuple in df.columns] # 验证结果 print(df.columns.to_list()) # 输出字符串列表
验证列类型
先确认列索引的类型,执行以下代码:
print(type(df.columns)) # 若输出为<class 'pandas.core.indexes.multi.MultiIndex'>,即可确认是多级索引问题
内容的提问来源于stack exchange,提问作者Wheel
相关产品推荐
相关产品推荐

