[英]Python Pandas merge two data frames on two keys and get totals
I have two dfs我有两个dfs
F1_ID F1_ID | F2_ID F2_ID | Event_ID事件 ID | Date日期 |
---|---|---|---|
a1 a1 | b2 b2 | ab4 ab4 | 5/12/21 21 年 5 月 12 日 |
a2 a2 | b3 b3 | ab5 ab5 | 5/12/21 21 年 5 月 12 日 |
b2 b2 | a1 a1 | ab4 ab4 | 5/12/21 21 年 5 月 12 日 |
b3 b3 | a2 a2 | ab5 ab5 | 5/12/21 21 年 5 月 12 日 |
the second df has a lot more information on it so I am going to show a filtered version of it.第二个 df 有更多关于它的信息,所以我将展示它的过滤版本。
F1_ID F1_ID | Event_Name事件名称 | F2_ID F2_ID | Event_ID事件 ID | Date日期 | stats统计数据 | amount数量 | F1_str_total F1_str_total | F2_str_total F2_str_total |
---|---|---|---|---|---|---|---|---|
a1 a1 | Test测试 | b2 b2 | ab1 ab1 | 5/8/21 21 年 5 月 8 日 | 12 12 | 41 41 | 13 13 | 17 17 |
a2 a2 | Test1测试1 | b3 b3 | ab2 ab2 | 5/8/21 21 年 5 月 8 日 | 16 16 | 42 42 | 12 12 | 54 54 |
b2 b2 | Test测试 | a1 a1 | ab1 ab1 | 5/8/21 21 年 5 月 8 日 | -12 -12 | -41 -41 | 0 0 | 7 7 |
b3 b3 | Test1测试1 | a2 a2 | ab2 ab2 | 5/8/21 21 年 5 月 8 日 | -16 -16 | -42 -42 | 87 87 | 97 97 |
I would like to append the details in df1 to df2 and put None
in the missing columns but im not sure how to do this.我想 append df1 到 df2 中的详细信息,并将None
放在缺少的列中,但我不知道该怎么做。
Expected Output:预期 Output:
F1_ID F1_ID | Event_Name事件名称 | F2_ID F2_ID | Event_ID事件 ID | Date日期 | stats统计数据 | amount数量 | F1_str_total F1_str_total | F2_str_total F2_str_total |
---|---|---|---|---|---|---|---|---|
a1 a1 | Test测试 | b2 b2 | ab1 ab1 | 5/8/21 21 年 5 月 8 日 | 12 12 | 41 41 | 13 13 | 17 17 |
a2 a2 | Test1测试1 | b3 b3 | ab2 ab2 | 5/8/21 21 年 5 月 8 日 | 16 16 | 42 42 | 12 12 | 54 54 |
b2 b2 | Test测试 | a1 a1 | ab1 ab1 | 5/8/21 21 年 5 月 8 日 | -12 -12 | -41 -41 | 0 0 | 7 7 |
b3 b3 | Test1测试1 | a2 a2 | ab2 ab2 | 5/8/21 21 年 5 月 8 日 | -16 -16 | -42 -42 | 87 87 | 97 97 |
a1 a1 | None没有任何 | b2 b2 | ab4 ab4 | 5/12/21 21 年 5 月 12 日 | None没有任何 | None没有任何 | None没有任何 | None没有任何 |
a2 a2 | None没有任何 | b3 b3 | ab5 ab5 | 5/12/21 21 年 5 月 12 日 | None没有任何 | None没有任何 | None没有任何 | None没有任何 |
b2 b2 | None没有任何 | a1 a1 | ab4 ab4 | 5/12/21 21 年 5 月 12 日 | None没有任何 | None没有任何 | None没有任何 | None没有任何 |
b3 b3 | None没有任何 | a2 a2 | ab% ab% | 5/12/21 21 年 5 月 12 日 | None没有任何 | None没有任何 | None没有任何 | None没有任何 |
Simply use pandas.DataFrame.append()只需使用pandas.DataFrame.append()
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
Or you can use pandas.concat()或者你可以使用pandas.concat()
df2 = pd.concat([df2, df1], ignore_index=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.