【问题标题】:Rename columns with multiple value dictionary使用多值字典重命名列
【发布时间】:2016-08-23 23:37:49
【问题描述】:

我有一个数据框,并希望根据每个键具有多个值的字典重命名列。字典键具有所需的列名,并且值包含可能的旧列名。列名没有模式。

import pandas as pd
column_dict = {'a':['col_a','col_1'], 'b':['col_b','col_2'], 'c':'col_c','col_3']}

df = pd.DataFrame([(1,2.,'Hello'), (2,3.,"World")], columns=['col_1', 'col_2', 'col_3'])

用键替换文本的功能

def replace_names(text, dict):
    for key in dict:
    text = text.replace(dict[key],key)
return text


replace_names(df.columns.values,column_dict)

在列名上调用时出错

AttributeError: 'numpy.ndarray' object has no attribute 'replace'

还有其他方法吗?

【问题讨论】:

    标签: arrays pandas rename


    【解决方案1】:

    如果你提供一个将旧列名映射到新列名的字典,你可以使用df.rename(columns=...)

    import pandas as pd
    column_dict = {'a':['col_a','col_1'], 'b':['col_b','col_2'], 'c':['col_c','col_3']}
    df = pd.DataFrame([(1,2.,'Hello'), (2,3.,"World")], columns=['col_1', 'col_2', 'col_3'])
    
    col_map = {col:key for key, cols in column_dict.items() for col in cols}
    df = df.rename(columns=col_map)
    

    产量

       a    b      c
    0  1  2.0  Hello
    1  2  3.0  World
    

    【讨论】:

    • 完美,简单多了!
    猜你喜欢
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2021-08-27
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多