简体   繁体   English

Python Pandas 在两个键上合并两个数据帧并得到总数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM