繁体   English   中英

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

[英]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 日 没有任何 没有任何 没有任何 没有任何

只需使用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 

或者你可以使用pandas.concat()

df2 = pd.concat([df2, df1], ignore_index=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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