Заполнить NaN значения столбца в таблице данных из другой таблицы данных панд



У меня есть таблица в pandas df



      main_id       p_id_y       score
1 1 123 0.617523
0 2 456 0.617523
0 3 789 NaN
0 4 987 NaN
1 5 654 NaN


Также у меня есть другой фрейм данных df2.
который имеет столбец



p_id   score
123 1.3
456 4.6
789 0.4
987 1.1
654 3.2


Я должен заполнить все оценки для всех p_id_y which is NaN с соответствующим счетом p_id в df2.



Мой окончательный вывод должен быть.



      main_id       p_id_y       score
1 1 123 0.617523
0 2 456 0.617523
0 3 789 0.4
0 4 987 1.1
1 5 654 3.2


Любые идеи, как этого добиться?
я думал использовать это



df['score'] = df['score'].fillna(something)
571   2  

2 ответов:

Я думаю, что вы можете использовать combine_first или fillna, но сначала ... set_index для выравнивания данных:

df1 = df1.set_index('p_id_y')
df1['score'] = df1['score'].combine_first(df2.set_index('p_id')['score'])
#df1['score'] = df1['score'].fillna(df2.set_index('p_id')['score'])

print (df1.reset_index())
   p_id_y  main_id     score
0     123        1  0.617523
1     456        2  0.617523
2     789        3  0.400000
3     987        4  1.100000
4     654        5  3.200000

Используйте fillna и join

df.fillna(df[['p_id_y']].join(df2.set_index('p_id'), on='p_id_y'))

Введите описание изображения здесь

Comments

    Ничего не найдено.