这是我的问题,我想在数据帧的 B 列的元素列表中查找 A 列的元素。因此,我只想保留在 A 中找到元素的那些行:df = pd.DataFrame({'A': [1, 2], 'B': [1, 3] })result = df[df.A.isin(df.B)]>>> result A B0 1 1工作正常,但我真正想要的是:df = pd.DataFrame({'A': [1, 2], 'B': [[1, 2], [1, 3]] })result = df[df.A.isin(df.B)]>>> resultEmpty DataFrameColumns: [A, B]Index: []哪个不起作用,因为 A 中的元素不是与 B 列中的列表元素进行比较,而是与整个列表进行比较?我想要的结果是:>>> result A B0 1 [1, 2]那可能吗?
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
你可以这样做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]
添加回答
举报
0/150
提交
取消