Python 查找一个数据帧是否是另一个数据帧的子集,同时忽略索引
尝试查找pandas df是否是不同pandas df的子集 当两个数据帧的索引匹配时,我可以比较它们,但在我的例子中,行具有不同的索引Python 查找一个数据帧是否是另一个数据帧的子集,同时忽略索引,python,pandas,dataframe,Python,Pandas,Dataframe,尝试查找pandas df是否是不同pandas df的子集 当两个数据帧的索引匹配时,我可以比较它们,但在我的例子中,行具有不同的索引 ex=pd.DataFrame({“col1”:[“香蕉”、“番茄”、“苹果”], “col2”:[“猫”、“狗”、“kangoo”], “col3”:[“电视”、“电话”、“ps4”]}) ex2=pd.DataFrame({“col1”:[“番茄”,“苹果”], “col2”:[“dog”,“kangoo”], “col3”:[“电话”,“ps4”]})
ex=pd.DataFrame({“col1”:[“香蕉”、“番茄”、“苹果”],
“col2”:[“猫”、“狗”、“kangoo”],
“col3”:[“电视”、“电话”、“ps4”]})
ex2=pd.DataFrame({“col1”:[“番茄”,“苹果”],
“col2”:[“dog”,“kangoo”],
“col3”:[“电话”,“ps4”]})
ex2.isin(ex).all().all()
>>>假的
我希望上述结果匹配并为真,目前它只查找相同的索引,我如何覆盖它。可能的解决方案是使用
合并所有列(无参数on
),然后使用isin
和子集:
print (ex2.merge(ex).isin(ex2))
col1 col2 col3
0 True True True
1 True True True
print (ex2.merge(ex).isin(ex2).all().all())
True
另一个想法是比较多索引:
i1 = ex2.set_index(ex2.columns.tolist()).index
i2 = ex.set_index(ex.columns.tolist()).index
print (i1.isin(i2).all())
True
是的,我想OP需要逐行检查。