这是我的问题,我想在数据帧的B列的元素列表中找到A列的元素。结果,我只想保留那些在A中找到元素的行:
df = pd.DataFrame({'A': [1, 2],
'B': [1, 3]
})
result = df[df.A.isin(df.B)]
>>> result
A B
0 1 1
工作正常,但我真正想要的是:
df = pd.DataFrame({'A': [1, 2],
'B': [[1, 2], [1, 3]]
})
result = df[df.A.isin(df.B)]
>>> result
Empty DataFrame
Columns: [A, B]
Index: []
哪个不起作用,因为A中的元素没有与B列中的列表元素进行比较,而是与整个列表进行比较?
结果,我希望拥有的是:
>>> result
A B
0 1 [1, 2]
那可能吗?
您可以apply
:
df[df.apply(lambda row: row['A'] in row['B'], axis=1)]
或zip理解:
df[[a in b for a,b in zip(df['A'], df['B'])]]
输出:
A B
0 1 [1, 2]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句