从两个dfs之间的差异创建pandas df

时间:2017-07-12 08:29:13

标签: python pandas dataframe difference

设置向上

我有两个pandas数据框df1df2,每个都包含两列,其中包含对id及其各自网址的观察,

| id | url |          | id | url | 
------------          ------------
| 1  | url |          | 2  | url |
| 2  | url |          | 4  | url |
| 3  | url |          | 3  | url |
| 4  | url |          | 5  | url |
                      | 6  | url |

dfs中有一些观察结果,id列中有明确说明,例如观察2及其url都在dfs中。

在dfs中定位的那些' double'观察结果不一定必须相同,例如观察2位于df1的第一行,df2的第二行。

最后,dfs不一定具有相同数量的观察结果,例如df1有四个观察结果,df2有五个观察结果。

问题

我希望在df2中引出所有独特的观察结果并将其插入新的df(df3),即我想获取,

| id | url |
------------
| 5  | url |
| 6  | url |

我该怎么办?

我已经尝试了this answer,但无法让它适用于我的双列数据帧。

我还试过this other answer,但这给了我一个空的common数据帧。

2 个答案:

答案 0 :(得分:0)

可能是这样的:df3 = df2[~df2.id.isin(df1.id.tolist())]

答案 1 :(得分:0)

ID号码是一个很好的索引名称:

df1.index = df1.id
df2.index = df2.id

然后使用非常直截了当的index.difference

diff_index = df2.index.difference(df1.index)
df3 = df2.loc[diff_index]