组合 2 个具有不同列数的数据帧并将它们与 sum 聚合
Combining 2 dataframes with different number of columns and aggregate them with sum
所以我有这 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" 和 [=26 分组=]列(将在下面说明)。
2) 汇总 df1["number"] 和 df2["number"] 并将它们加在一起[=13=]
这是我想要的结果:
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
非常感谢您的帮助! :)
使用 pandas merge,将 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
所以我有这 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" 和 [=26 分组=]列(将在下面说明)。
2) 汇总 df1["number"] 和 df2["number"] 并将它们加在一起[=13=]
这是我想要的结果:
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
非常感谢您的帮助! :)
使用 pandas merge,将 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