Python 测试数据帧的多列中是否有共享值

Python 测试数据帧的多列中是否有共享值,python,pandas,Python,Pandas,如何测试数据帧的多列中是否有共享的值?例如,这是确定的: A B C 0 aaa fff lll 1 bbb ggg mmm 2 ccc hhh nnn 3 ddd iii ooo 4 eee jjj ppp 但事实并非如此 A B C 0 aaa fff lll 1 bbb ggg mmm 2 ccc hhh nnn 3 ddd iii bbb 4 eee jjj

如何测试数据帧的多列中是否有共享的值?例如,这是确定的:

      A    B    C
0   aaa  fff  lll
1   bbb  ggg  mmm
2   ccc  hhh  nnn
3   ddd  iii  ooo
4   eee  jjj  ppp
但事实并非如此

      A    B    C
0   aaa  fff  lll
1   bbb  ggg  mmm
2   ccc  hhh  nnn
3   ddd  iii  bbb
4   eee  jjj  ppp

因为bbb存在于多个列A和C中。

首先获取所有列组合之间的交集,转换为numpy数组,然后转换为布尔值,并至少测试一个True:

对于第一个df:

print (a)
[set(), set(), set()]

print (b)
False
对于第二个df:

print (a)
[set(), {'bbb'}, set()]

print (b)
True
有关更多信息,请使用未经测试的:

d = {i:set(df[i[0]]) & set(df[i[1]]) for i in combinations(df.columns,2)}

s = pd.Series(d)

s = s[s.astype(bool)]

您的所有列是否都属于同一obj数据类型?您是否期望类似于布尔数组的东西,它对应于每个具有某种真/假的唯一值。该值以2+列表示?是的,一致的数据类型整数。只是在这里使用了字符串,以便于查看。我不需要一个有问题的单元格的奇特的布尔映射,但我想知道哪些值是违规的,它们存在于哪些列中。
d = {i:set(df[i[0]]) & set(df[i[1]]) for i in combinations(df.columns,2)}

s = pd.Series(d)

s = s[s.astype(bool)]