首页 > 解决方案 > 在熊猫数据框中重命名时找不到列

问题描述

我有这个熊猫数据框

timestamp    EG2021   EGH2021
2021-01-04    33        Nan
2021-02-04    45        65

我正在尝试用新名称替换列名,就像在这样的 excel 文件中映射的那样

     OldId           NewId
     EG2021        LER_EG2021
     EGH2021       LER_EGH2021

我尝试了下面的代码,但它不起作用我得到错误

KeyError:“[索引(['LER_EG2021',LER_EGH2021'],\n
dtype ='object',长度= 186)]中没有[列]

代码:

df = pd.ExcelFile('ids.xlsx').parse('Sheet1')
x=[]
x.append(df['external_ids'].to_list())
dtest_df = (my panda dataframe as mentioned above)
mapper = df.set_index(df['oldId'])[df['NewId']]
dtest_df.columns = dtest_df.columns.Series.replace(mapper)

知道我在做什么错吗?

标签: pythonpandas

解决方案


你需要:

mapper = df.set_index('oldId')['NewId']
dtest_df.columns = dtest_df.columns.map(mapper.to_dict())

或者:

dtest_df = dtest_df.rename(columns=df.set_index('oldId')['NewId'].to_dict())

dtest_df输出:

    timestamp    LER_EG2021   LER_EGH2021
0  2021-01-04            33           NaN
1  2021-02-04            45            65

推荐阅读