寻求合并以下两个数据框的帮助。
df1:
key mean stddev
--- ----- -------
key1 30 3
key2 40 4
key3 50 5
df2:
key mean stddev
--- ----- -------
key2 70 7
key3 80 8
key4 90 9
需要合并以上两个数据框以产生三种不同的结果:
1. Rows that are in df1 but not in df2:
key mean stddev
--- ----- -------
key1 30 3
2. Rows that are in both df1 and df2 (please see the new columns delta_mean(difference of mean), delta_stddev (difference of stddev)
key mean_x stddev mean_y stddev_y delta_mean delta_stddev
--- ----- ------- ------ -------- --------- -----------
key2 40 4 70 7 30 3
key3 50 5 80 8 30 3
另外,我想按 delta_mean 对其进行排序。
3. Rows that are in df2 but but not not in df1
key mean stddev
--- ----- -------
key4 90 9
答案 0 :(得分:1)
在第一个和第三个所需的输出中,您可以简单地从当前数据帧中过滤另一个不存在的键。您只需要在第二个选项中进行合并:
1.位于 df1 但不在 df2 中的行:
df1[~df1.key.isin(df2.key)]
key mean stddev
0 key1 30 3
2. df1 和 df2 中的行
df1.merge(df2, on='key')
key mean_x stddev_x mean_y stddev_y
0 key2 40 4 70 7
1 key3 50 5 80 8
3.位于 df2 但不在 df1 中的行
df2[~df2.key.isin(df1.key)]
key mean stddev
2 key4 90 9