python - 查找数据框是否是另一个数据框的子集,同时忽略索引

标签 python pandas dataframe

试图找出一个 pandas df 是否是另一个 pandas df 的子集

当索引匹配时,我可以比较两个数据帧,但在我的例子中,行具有不同的索引

ex = pd.DataFrame({"col1": ["banana", "tomato", "apple"],
               "col2": ["cat", "dog", "kangoo"],
               "col3": ["tv", "phone", "ps4"]})
ex2 = pd.DataFrame({"col1": [ "tomato", "apple"],
               "col2": [ "dog", "kangoo"],
               "col3": [ "phone", "ps4"]})

ex2.isin(ex).all().all()
>>> False

我希望上面的结果匹配并显示为 True,目前它只查找相同的索引,我该如何覆盖它。

最佳答案

可能的解决方案是对所有列使用merge(无参数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

另一个想法是比较 MultiIndexes:

i1 = ex2.set_index(ex2.columns.tolist()).index
i2 = ex.set_index(ex.columns.tolist()).index

print (i1.isin(i2).all())
True

关于python - 查找数据框是否是另一个数据框的子集,同时忽略索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57144813/

相关文章:

python - 保存编号变量

python - 如何使用时间点计算 Pandas 中的累积 groupby 计数?

python - 从 Dask Dataframe 中获取一行而不将整个 Dataframe 加载到内存中

pandas - Python DF2Gspread 库无法将 DF 保存到 Google 工作表

python - 使用 Rpy2 将 Pandas DataFrame 转换为 R dataframe

r - 在应用族函数中使用反引号和运算符

python - 64 位上的 Matlab 安装目录是什么,或者如何在 Python 中获取它?

python - 将包装函数定义中接收到的 **kwargs 传递给封闭(即包装)函数调用的参数

python - 检查变量是否在python中定义的简单方法?

python - 通过 HashMap 根据其他列设置或替换数据帧列中的值