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

for循环批量重命名多个DataFrame列出现堆叠重复列问题

问题根因

重复列是列表推导式写法错误导致的:

  • 推导式循环中你每次返回的是整个处理完成的列名Index对象,而非单个处理后的列名,最终赋值给df.columns的是长度等于原列数、每个元素都是完整列名序列的列表,直接造成列名重复堆叠。
  • 举个直观例子:如果原列是['User Name', 'Age Group'],你的写法运行后会生成[Index(['user_name', 'age_group']), Index(['user_name', 'age_group'])],赋值后列结构完全异常。
修正代码

pandas的.str是向量化操作,本身就会直接返回处理好的完整列名序列,不需要套列表推导式循环,直接赋值即可:

df_names = ('castaways', 'challenge_description', 'challenge_results')
for df_name in df_names:
    df = globals()[df_name]
    df.columns = df.columns.str.replace(' ', '_').str.lower()

如果偏好列表推导式写法,要保证每次循环处理单个列名,不要对整个columns对象重复做全局处理:

df_names = ('castaways', 'challenge_description', 'challenge_results')
for df_name in df_names:
    df = globals()[df_name]
    df.columns = [col_name.replace(' ', '_').lower() for col_name in df.columns]

内容的提问来源于stack exchange,提问作者max

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:09:29