[英]Python Pandas merge two data frames on two keys and get totals
我有两个dfs
F1_ID | F2_ID | 事件 ID | 日期 |
---|---|---|---|
a1 | b2 | ab4 | 21 年 5 月 12 日 |
a2 | b3 | ab5 | 21 年 5 月 12 日 |
b2 | a1 | ab4 | 21 年 5 月 12 日 |
b3 | a2 | ab5 | 21 年 5 月 12 日 |
第二个 df 有更多关于它的信息,所以我将展示它的过滤版本。
F1_ID | 事件名称 | F2_ID | 事件 ID | 日期 | 统计数据 | 数量 | F1_str_total | F2_str_total |
---|---|---|---|---|---|---|---|---|
a1 | 测试 | b2 | ab1 | 21 年 5 月 8 日 | 12 | 41 | 13 | 17 |
a2 | 测试1 | b3 | ab2 | 21 年 5 月 8 日 | 16 | 42 | 12 | 54 |
b2 | 测试 | a1 | ab1 | 21 年 5 月 8 日 | -12 | -41 | 0 | 7 |
b3 | 测试1 | a2 | ab2 | 21 年 5 月 8 日 | -16 | -42 | 87 | 97 |
我想 append df1 到 df2 中的详细信息,并将None
放在缺少的列中,但我不知道该怎么做。
预期 Output:
F1_ID | 事件名称 | F2_ID | 事件 ID | 日期 | 统计数据 | 数量 | F1_str_total | F2_str_total |
---|---|---|---|---|---|---|---|---|
a1 | 测试 | b2 | ab1 | 21 年 5 月 8 日 | 12 | 41 | 13 | 17 |
a2 | 测试1 | b3 | ab2 | 21 年 5 月 8 日 | 16 | 42 | 12 | 54 |
b2 | 测试 | a1 | ab1 | 21 年 5 月 8 日 | -12 | -41 | 0 | 7 |
b3 | 测试1 | a2 | ab2 | 21 年 5 月 8 日 | -16 | -42 | 87 | 97 |
a1 | 没有任何 | b2 | ab4 | 21 年 5 月 12 日 | 没有任何 | 没有任何 | 没有任何 | 没有任何 |
a2 | 没有任何 | b3 | ab5 | 21 年 5 月 12 日 | 没有任何 | 没有任何 | 没有任何 | 没有任何 |
b2 | 没有任何 | a1 | ab4 | 21 年 5 月 12 日 | 没有任何 | 没有任何 | 没有任何 | 没有任何 |
b3 | 没有任何 | a2 | ab% | 21 年 5 月 12 日 | 没有任何 | 没有任何 | 没有任何 | 没有任何 |
df2 = df2.append(df1, ignore_index=True)
print(df2)
F1_ID Event_Name F2_ID Event_ID Date stats amount F1_str_total \
0 a1 Test b2 ab1 5/8/21 12.0 41.0 13.0
1 a2 Test1 b3 ab2 5/8/21 16.0 42.0 12.0
2 b2 Test a1 ab1 5/8/21 -12.0 -41.0 0.0
3 b3 Test1 a2 ab2 5/8/21 -16.0 -42.0 87.0
4 a1 NaN b2 ab4 5/12/21 NaN NaN NaN
5 a2 NaN b3 ab5 5/12/21 NaN NaN NaN
6 b2 NaN a1 ab4 5/12/21 NaN NaN NaN
7 b3 NaN a2 ab5 5/12/21 NaN NaN NaN
F2_str_total
0 17.0
1 54.0
2 7.0
3 97.0
4 NaN
5 NaN
6 NaN
7 NaN
或者你可以使用pandas.concat()
df2 = pd.concat([df2, df1], ignore_index=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.