使用多个值字典重命名列

时间:2016-04-29 00:34:48

标签: arrays pandas rename

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

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'

还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

如果您提供将旧列名称映射到新列名称的dict,则可以使用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