我有2个数据帧,我想用
isin() method
检查df1和df2中存在的内容。在
当我只比较一列(index1)时-结果正常-df2.index1中存在df1.index1的2个值。在
但是,当我比较df1和df2的2列(index1,index2)时,所有3行的结果都是错误的,即使只有一个公共行(index1=3,index2=6)。在
为什么?在
谢谢。在
In [2]: import pandas as pd
In [3]: df1 = pd.DataFrame({'A': [1,2,3], 'index1':[1,2,3], 'index2':[4,5,6]})
In [4]: df2 = pd.DataFrame({'A': [4,5,6], 'index1':[2,3,4], 'index2':[7,6,5]})
In [5]: df1
Out[5]:
A index1 index2
0 1 1 4
1 2 2 5
2 3 3 6
In [6]: df2
Out[6]:
A index1 index2
0 4 2 7
1 5 3 6
2 6 4 5
In [7]: df1['index1'].isin(df2['index1'])
Out[7]:
0 False
1 True
2 True
Name: index1, dtype: bool
In [8]: df1['index2'].isin(df2['index2'])
Out[8]:
0 False
1 True
2 True
Name: index2, dtype: bool
In [9]: df1[['index1','index2']].isin(df2[['index1', 'index2']])
Out[9]:
index1 index2
0 False False
1 False False
2 False False
这是因为“只有在所有标签都匹配的情况下,结果才会在某个位置为真。”(docs)。如果要忽略标签,则需要使用底层numpy数组:
如果希望标签与列匹配,可以使用字典:
^{pr2}$如果要检查行是否完全匹配,则需要使用merge:
当index1和index2都匹配时,}。在
_merge
列返回{相关问题 更多 >
编程相关推荐