You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并同名列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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:48:14