如何合并和计算两个数据帧?

时间:2021-01-21 00:34:38

标签: python pandas dataframe

寻求合并以下两个数据框的帮助。

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

1 个答案:

答案 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