2024-06-12 08:47:05 发布
网友
如何测试数据帧的多列中是否有共享的值?例如,这是可以的:
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)中。你知道吗
bbb
首先获取所有列组合之间的交集,转换为numpy array,然后转换为boolean,并测试至少一个True:
numpy array
boolean
True
from itertools import combinations a = [set(df[i[0]]) & set(df[i[1]]) for i in combinations(df.columns,2)] b = np.array(a).astype(bool).any()
对于第一个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)]
首先获取所有列组合之间的交集,转换为
numpy array
,然后转换为boolean
,并测试至少一个True
:对于第一个df:
对于第二个df:
有关更多信息,请使用(未经测试):
相关问题 更多 >
编程相关推荐