检查pandas数据框是否为其他数据框的子集
问题内容:
我有两个Python Pandas数据框A,B,它们具有相同的列(显然具有不同的数据)。我要检查A是B的子集,即A的所有行都包含在B中。
知道怎么做吗?
问题答案:
方法DataFrame.merge(another_DF)
在列的默认交集合并(使用来自两个话语结构相同名称的所有列),并使用how='inner'
-因此,我们期望有行相同#后inner join
(如果没有的话语结构有重复):
len(A.merge(B)) == len(A)
PS,如果其中一个DF有重复的行,它将无法正常工作-有关此类情况,请参见下文
演示:
In [128]: A
Out[128]:
A B C
0 1 2 3
1 4 5 6
In [129]: B
Out[129]:
A B C
0 4 5 6
1 1 2 3
2 9 8 7
In [130]: len(A.merge(B)) == len(A)
Out[130]: True
对于包含重复项的数据集,我们可以删除重复项并使用相同的方法:
In [136]: A
Out[136]:
A B C
0 1 2 3
1 4 5 6
2 1 2 3
In [137]: B
Out[137]:
A B C
0 4 5 6
1 1 2 3
2 9 8 7
3 4 5 6
In [138]: A.merge(B).drop_duplicates()
Out[138]:
A B C
0 1 2 3
2 4 5 6
In [139]: len(A.merge(B).drop_duplicates()) == len(A.drop_duplicates())
Out[139]: True