两个pandas数据帧之间的列匹配

时间:2014-07-29 09:08:54

标签: python pandas match

import pandas as pd
temp1 = pd.DataFrame(index=arange(10), columns=['a','b'])
temp1['a'] = [1,2,2,3,3,4,4,4,9,11]
temp1['b'] = 'B'

temp2 = pd.DataFrame(index=arange(10), columns=['a','b'])
temp2['a'] = [1,2,3,4,5,6,7,8,9,10]
temp2['b'] = 'B'

如上面的脚本所示,我想从temp1中选取a未找到temp2列的行。我可以在R中使用%in%轻松完成,我怎么能在熊猫中做到这一点?

更新01

输出应该是一行,a列是11而列bB

2 个答案:

答案 0 :(得分:0)

您可以使用isin获取 所见的索引,然后否定布尔索引:

temp1[~temp1.a.isin(temp2.a)]

答案 1 :(得分:0)

您可以使用isin执行布尔索引:

isin将产生一个布尔索引:

In [95]:

temp1.a.isin(temp2.a)
Out[95]:
0     True
1     True
2     True
3     True
4     True
5     True
6     True
7     True
8     True
9    False
Name: a, dtype: bool

然后可以将其用作最终输出中的掩码:

In [94]:
# note the ~ this negates the result so equivalent of NOT
temp1[~temp1.a.isin(temp2.a)]
Out[94]:
    a  b
9  11  B