#python #pandas
#python #pandas
Вопрос:
У меня есть фрейм данных с отсутствующими значениями для некоторых столбцов:
a = pd.DataFrame(data = {"name":['bob','sue','dave'],'status':[np.NaN,np.NaN,'A'],'team':['red','blue',np.NaN]},index=[100,101,105])
Фрейм данных a
У меня есть другой dataframe с тем же индексом, где некоторые из отсутствующих значений были заменены:
b = pd.DataFrame(data = {"name":['bob','sue','dave'],'status':['I','O','A'],'team':['red','blue',np.NaN]},index=[100,101,105])
Фрейм данных b
Есть ли способ сопоставить dataframe b
с a
, чтобы заменить значения для определенных столбцов в a
? Есть много других строк в, a
которых нет в b
, поэтому я хочу заменить только строки с тем же индексом.
Я пробовал это, но он устанавливает значения в np.NaN
:
a['status'] = a['status'].map(b['status'])
a['team'] = a['team'].map(b['team'])
Фрейм данных a
после сопоставления
Комментарии:
1.
a.combine_first(b)
?
Ответ №1:
Это может быть сделано с помощью операции среза. Индекс второго фрейма данных используется для нарезки первого фрейма данных
Затем вы назначаете второй dataframe.
a.loc[b.index] = b
Вывод:
name status team
100 bob I red
101 sue O blue
105 dave A NaN
Ответ №2:
Вся заслуга @Sushanth
>>> a.combine_first(b)
name status team
100 bob I red
101 sue O blue
105 dave A NaN