Объединение двух фреймов данных с получением максимум двух столбцов - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть два кадра данных с одинаковой формой:

> df1
Day ItemId Quantity
  1      1        2
  1      2        3
  1      4        5

> df2
Day ItemId Quantity
  1      1        0
  1      2        0
  1      3        0
  1      4        0

Я хотел бы объединить df1 и df2, и если в df1 и df2 есть строка ['Day','ItemId'], возьмите df1, который макс. Iпробовал эту команду:

df = pd.concat([df1, df2]).groupby(level=0).max(df1['Quantity'],df2['Quantity'])

1 Ответ

0 голосов
/ 02 декабря 2018

Используйте groupby обоими столбцами в списке и совокупности max:

df = pd.concat([df1, df2]).groupby(['Day','ItemId'], as_index=False)['Quantity'].max()
print (df)
   Day  ItemId  Quantity
0    1       1         2
1    1       2         3
2    1       3         0
3    1       4         5

Если возможно, несколько столбцов:

df = (pd.concat([df1, df2])
        .sort_values(['Day','ItemId','Quantity'], ascending=[True, True, False])
        .drop_duplicates(['Day','ItemId']))
print (df)

   Day  ItemId  Quantity
0    1       1         2
1    1       2         3
2    1       3         0
2    1       4         5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...