Pandas - объединить два DataFrames с идентичными именами столбцов

У меня есть два кадра данных с одинаковыми именами столбцов и идентичными идентификаторами в первом столбце. За исключением столбца идентификатора, каждая ячейка, содержащая значение в одном DataFrame, содержит NaN в другом. Вот пример того, как они выглядят:

ID Cat1 Cat2 Cat3
1 NaN 75 NaN
2 61 NaN 84
3 NaN NaN NaN
ID Cat1 Cat2 Cat3
1 54 NaN 44
2 NaN 38 NaN
3 49 50 53

Я хочу объединить их в один DataFrame, сохранив те же имена столбцов. Таким образом, результат будет выглядеть так:

ID Cat1 Cat2 Cat3
1 54 75 44
2 61 38 84
3 49 50 53

Я пробовал:

df3 = pd.merge(df1, df2, on='ID', how='outer')

Что дало мне DataFrame, содержащее в два раза больше столбцов. Как я могу объединить значения из каждого DataFrame в один?

2 ответа

Вероятно, вам нужно df.update. См. Документацию .

df1.update(df2, raise_conflict=True)


В этом случае функция comb_first подходит. (http://pandas.pydata.org/pandas-docs/version/0.13.1/merging.html)

Как следует из названия, comb_first принимает первый DataFrame и добавляет к нему значения со второго, где он находит значение NaN в первом.

Итак:

df3 = df1.combine_first(df2)

создает новый DataFrame, df3, который по существу является только df1 со значениями из df2, заполненными, когда это возможно.

licensed under cc by-sa 3.0 with attribution.