Обновляет только некоторые значения в фрейме данных, используя другой фрейм данных

#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()