Объединить имена столбцов со значениями данного столбца

Предположим, у нас есть df_1 и df_2 ниже. Я пытаюсь найти способ заменить имена столбцов df_1 на основе значений в столбце E в df_2 . Столбец C в df_2 определяет, как они связаны.

df_1 = pd.DataFrame({
    'A': [0, 1, 1],
    'B': [0, 1, 1],
    'rkgjh': [0, 1, 1],
    'hvdfe': [0, 1, 1],
    'qruif': [0, 1, 1]
})

df_1
    A   B   rkgjh   hvdfe   qruif
0   0   0   0       0       0
1   1   1   1       1       1
2   1   1   1       1       1

df_2 = pd.DataFrame({
    'C': [0, 1, 2, 3, 4],
    'D': ['hvdfe', 'qruif', 'cvbnf', 'ertyu', 'rkgjh'],
    'E': ['name1', 'name2', 'name3', 'name4', 'name5']
})

df_2
    C   D       E
0   0   hvdfe   name1
1   1   qruif   name2
2   2   cvbnf   name3
3   3   ertyu   name4
4   4   rkgjh   name5

Я хотел бы закончить с df_3 ниже:

df_3
    A   B   name5   name1   name2
0   0   0       0   0       0
1   1   1       1   1       1
2   1   1       1   1       1

Всего 1 ответ


Вы можете использовать Series.replace :

df_3 = df_1.copy()
df_3.columns=df_1.columns.to_series().replace(df_2.set_index('D')['E'])

Выход:

   A  B  name5  name1  name2
0  0  0      0      0      0
1  1  1      1      1      1
2  1  1      1      1      1

Есть идеи?

10000