【发布时间】:2017-01-17 14:20:43
【问题描述】:
我有两个由列组成的数据框
df 有列:id1
id1
1
2
3
4
5
6
df2 有列:id2
id2
2
1
5
4
正如您在 df1 中看到的,有些值不在 df2['id2']
3,6
有没有办法通过对两个数据框列进行差异来找到它 还是其他方式?
我试过了
df2.isin(df1)
但只获取布尔值。
但我想要实际的行
【问题讨论】:
我有两个由列组成的数据框
df 有列:id1
id1
1
2
3
4
5
6
df2 有列:id2
id2
2
1
5
4
正如您在 df1 中看到的,有些值不在 df2['id2']
3,6
有没有办法通过对两个数据框列进行差异来找到它 还是其他方式?
我试过了
df2.isin(df1)
但只获取布尔值。
但我想要实际的行
【问题讨论】:
有很多方法可以解决这个问题,但 Pandas 索引对象有一个 difference 方法,可以从调用索引中查找第二个索引中缺少的所有索引。
idx1 = pd.Index(df.id1)
idx2 = pd.Index(df.id2)
idx1.difference(idx2).values
array([3, 6])
使用isin 你会得到同样的结果:
df[~df.id1.isin(df2.id2)]
【讨论】:
你也可以使用集合操作
list(set(df.id1) - set(df2.id2))
[3, 6]
【讨论】: