Объединить 2 кадра данных с разным количеством столбцов и объединить их с суммой - PullRequest
1 голос
/ 21 февраля 2020

Итак, у меня есть эти 2 кадра данных

df1
title      URL  number         date
    a   /url-1       1   21-02-2020
    a   /url-1      10   20-02-2020
    a   /url-1      17   19-02-2020
    b   /url-2     100   21-02-2020
    b   /url-2     106   20-02-2020
df2
   URL  number         date
/url-1       5   21-02-2020
/url-1      12   20-02-2020
/url-1      50   19-02-2020
/url-3       9   21-02-2020
/url-3      11   20-02-2020

Поэтому мне нужно выполнить эти действия, чтобы объединить их в 1 кадр данных:

1) Внешнее соединение (поправьте меня, если я я не прав) df1 и df2, но я не знаю, как отобразить результаты в 4 столбцах, так как мне нужно сгруппировать по столбцам "URL" и "дата" (будет показано ниже).

2) Объедините df1 ["number"] и df2 ["number"] и сложите их вместе

Вот какой результат я хочу получить:

new_df
title      URL  number         date
    a   /url-1       6   21-02-2020
    a   /url-1      22   20-02-2020
    a   /url-1      67   19-02-2020
    b   /url-2     100   21-02-2020
    b   /url-2     106   20-02-2020
 null   /url-3       9   21-02-2020
 null   /url-3      11   20-02-2020

Ваша помощь очень ценится! :)

1 Ответ

1 голос
/ 21 февраля 2020

использовать pandas объединить , установить параметр how как внешний и объединить оба кадра данных по URL-адресу и дате.
Суммировать два числа и оставить только столбцы, которые имеют отношение.

M = df1.merge(df2,how='outer', on=['URL','date'])
M['number'] = M.number_x.fillna(0).add(M.number_y.fillna(0))
M.filter(['title','URL','number','date'])

    title   URL number  date
0   a   /url-1  6.0 21-02-2020
1   a   /url-1  22.0    20-02-2020
2   a   /url-1  67.0    19-02-2020
3   b   /url-2  100.0   21-02-2020
4   b   /url-2  106.0   20-02-2020
5   NaN /url-3  9.0 21-02-2020
6   NaN /url-3  11.0    20-02-2020
...