#python #list #append #apply #pandas-groupby
#python #Список #добавить #применить #pandas-groupby
Вопрос:
Я хотел бы добавить вычисленные различия к существующему фрейму данных в отношении идентификаторов. Различия были сохранены в отдельный фрейм данных.
Фактический фрейм данных имеет следующий вид df1
:
Id Col1 Col2 Col3
567 6 7 9
567 8 10 18
567 9 11 20
567 10 12 30
567 4 16 57
... ... ... ...
1568 6 7 9
1568 8 10 18
1568 9 11 20
1568 10 12 30
1568 4 16 57
Вычисленные различия, сохраненные df2
для каждого идентификатора отдельно, например для Id=567
:
Col1_d1 Col2_d1 Col3_d1
NaN NaN NaN
-2 -3 -9
-1 -1 -2
-1 -1 -10
6 -4 -27
Кроме того, NaN
значения, которые я заполнил 0
.
Я пытался использовать groupby
и map
, но безуспешно.
L1 = [x for _, x in df1.groupby(df1['Id'])]
Как я могу объединить его с моим вторым df2
фреймом данных с учетом требуемой группировки по Id
?
Я пытался сделать это с помощью: list(map(lambda x: df1.append(x), L1))
Ожидаемый результат:
Id Col1 Col2 Col3 Col1_d1 Col2_d1 Col3_d1
567 6 7 9 0 0 0
8 10 18 -2 -3 -9
9 11 20 -1 -1 -2
10 12 30 -1 -1 -10
4 16 57 6 -4 -27
1568 6 7 9 0 0 0
8 10 18 -2 -3 -9
9 11 20 -1 -1 -2
10 12 30 -1 -1 -10
4 16 57 6 -4 -27
Я ценю любую идею и помощь. Спасибо!
Ответ №1:
Исправлено использованием:
df1.reset_index(inlace = True)
df2['index'] = df1['index']
dfList = [df1, df2]
reduce(lambda x, y: pd.merge(x, y, on = 'index'), dfList)