【问题标题】:Rename pandas dataframe column name based on a list根据列表重命名熊猫数据框列名
【发布时间】:2021-02-03 17:49:00
【问题描述】:

我有多个包含许多列的数据框,每个 df 都有不同的列名,我想标准化名称以便能够正确合并它们

我希望能够将列重命名为标准名称

我所做的是我创建了一个可能的列名选项列表,如果名称在此列表中,我会遍历 df 中的列,重命名为标准名称

res_list=['SEDP', 'SFXE', 'RPCHM', 'AT90']  # standard name is RLA5
cols = df_test.columns

    for col in cols:
        if df_test[col].isin(res_list):
            df_test.rename({col:'RLA5'}, axis=1, inplace =True)
        else:
            pass

但这不起作用并给出以下错误

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

【问题讨论】:

  • 我建议打印 df_test[col].isin(res_list) 以查看它返回的内容。这应该让事情变得很清楚
  • 谢谢,我在 res_list 中尝试了 col: 并且成功了,但是下面的解决方案要好得多,因为它更短且更容易实现

标签: pandas rename


【解决方案1】:

您可以构造一个映射字典到rename 列(如果存在)

mapper = dict.fromkeys(['SEDP', 'SFXE', 'RPCHM', 'AT90'], 'RLA5')
df_test.rename(columns=mapper, inplace=True)

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2019-09-15
    • 2019-11-01
    • 2022-11-16
    • 2017-12-19
    • 2017-01-26
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多