我有一个数据框,并希望根据每个键有多个值的字典重命名列。字典键具有所需的列名称,并且值包含可能的旧列名称。列名称没有模式。
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'
还有其他办法吗?
答案 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