Как отобразить значения в первом кадре данных на основе второго кадра данных? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть два кадра данных. Df1 является основным df, а df2 является эталонным кадром данных. Df1 выглядит так:

u1d               Status: Partisipant status         Country:Country from URL
122                           2                                4    
123                           4                                11
124                           1                                14

и df2 выглядят так, что является ссылкой.

enter image description here

Я хочу это в df1 мои все значения соответствуют коду, например, в Статус: Статус участника 2 - Прервано, поэтому вместо 2 он должен отображаться как Прерванный и все остальные столбцы. У меня есть около 2000 столбцов, поэтому мне нужен также эффективный способ.

1 Ответ

1 голос
/ 10 марта 2020

Возможное решение - изменить на DataFrame.melt, добавить новые столбцы на DataFrame.merge и последний DataFrame.pivot:

df = (df1.melt('u1d', var_name='Variable_name', value_name='Value Code')
         .merge(df2, how='left')
         .pivot('u1d','Variable_name','Value Name'))

Другая идея:

for c in df1.columns[1:]:
    s = df2[df2['Variable_name'].eq(c)].set_index('Value Code')['Value Name']
    df1[c] = df1[c].map(s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...