Pandas多dataframe场景下通过列表循环做自动数据wrangling失败求助
问题核心原因
你当前的代码仅能匹配**列名为字符串'1'**的列,触发修改失败通常有两个原因:
- 目标列的实际列名不是字符串
'1'(比如是整数类型的1),字典匹配失效 - 你要修改的是「索引位置为1的列」(即第二列),而非列名为
'1'的列,现有逻辑完全不匹配
解决方案
方案1:按列位置修改(推荐,无需关心原列名)
如果确定要修改的是所有表的第二列(索引从0开始计数,位置1对应第二列),直接修改列名列表即可:
df_list = [week1, week2, week3, week4, week5, week6, week7, week8, week9, week10, week11, week12, week13, week14, week15, week16] for df in df_list: col_names = df.columns.tolist() # 修改索引为1的位置的列名 col_names[1] = 'State' df.columns = col_names
运行后原始的week1到week16变量会同步更新,因为列表存储的是DataFrame的引用,修改列名属性会直接作用到原对象上。
方案2:按原列名匹配修改
如果确认要按列名匹配修改,注意列名的类型要和字典的键完全一致:
for df in df_list: # 如果原列名是整数1,就用整数作为键 df.rename(columns={1: 'State'}, inplace=True)
如果需要批量修改多个列,直接扩展字典即可:
for df in df_list: df.rename(columns={ 0: 'City', 1: 'State', 2: 'Sales' }, inplace=True)
内容的提问来源于stack exchange,提问作者Andrea P.
相关产品推荐
相关产品推荐

