Pandas Сравнение двух разных датафреймов с промежуточной группировкой

Есть два датафрейма:

day code name qty
1 001 qwe 1
1 001 ewq 2
2 002 qaz 5
day code qty
1 001 3
4 002 5

если данные в колонках day и code совпадают в обеих таблицах, то проверяем на совпадения колонку qty, если количество совпадает, то создаем третий датафрейм, куда переносим совпадающие колонки из первого. вид третьего датафрейма:

day code name qty
1 001 qwe 1
1 001 ewq 2

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


Ответы (2 шт):

Автор решения: CrazyElf
  • выносите в индекс во втором датафрейме день и код
  • группируете первый датафрейм по дню и коду и суммируете количество
  • делаете merge датафреймов
  • оставляете записи, где количества совпадают
  • выносите в индекс в первом датафрейме день и код
  • делаете мерж того что получилось перед этим с этим первым фреймом
  • выкидываете лишние колонки

Может можно проще, но навскидку так.

→ Ссылка
Автор решения: strawdog

не совсем понял, зачем вам группировка.

попробуйте сделать так, например:

df1 = df1.set_index(["day", "code"])
df2 = df2.set_index(["day", "code"])
res = df1.join(df2, how='inner', rsuffix="r").iloc[:,:-1].reset_index()

res:

   day code name  qty 
0    1  001  qwe     1
1    1  001  ewq     2​
→ Ссылка