#pandas #dataframe
#панды #фрейм данных
Вопрос:
Как обновить определенные значения в одном столбце фрейма данных значениями из другого фрейма данных:
# Main dataframe
df1 = pd.DataFrame({'a':[1,2,3,4,5], 'b':['a2', 'a1', '?', '?', 'b2'], 'c':[100,101, 102, 103, 104]})
# Dataframe with new values for column 'b'
df2 = pd.DataFrame({'a':[3,4], 'b':['b5', 'c5']})
# Result: Main dataframe with updated values for 'b', using column 'a' as index/key
pd.DataFrame({'a':[1,2,3,4,5], 'b':['a2', 'a1', 'b5', 'c5', 'b2'], 'c':[100,101, 102, 103, 104]})
Комментарии:
1.
df1 = df1.replace('?', np.nan); df1.set_index('a').combine_first(df2.set_index('a')).reset_index()
?2. @It_is_Chris извините, это просто возвращает df1.
3. Я забыл заменить
?
наnp.nan
4. @It_is_Chris сработал! Большое спасибо. Если вы хотите опубликовать в качестве ответа, я могу принять его сразу.
Ответ №1:
Вы можете заменить на ?
, numpy.nan
а затем использовать pandas’ combine_first
df1 = df1.replace('?', np.nan)
df1.set_index('a').combine_first(df2.set_index('a')).reset_index()