我有两个数据框。 Dataframe A 有一列由 list ids(命名项)值组成。数据框 B 有一列 int id 值(命名为 id)。
数据框 A:
date | items
2019-06-05 | [121, 123, 124]
2019-06-06 | [109, 125]
2019-06-07 | [108, 126]
数据框 B:
name | id
item1 | 121
item2 | 122
item3 | 123
item4 | 124
item5 | 125
item6 | 126
我想过滤 Dataframe A 并只保留该行中 items 的所有值都存在于 Dataframe B 的 id 列中的行。
根据上面的例子,结果应该是:
数据框 C:
date | items
2019-06-05 | [121, 123, 124]
(因为 Dataframe B 没有 id==108 和 id==109 的行)
如果 items 是一个 int 列,我可以使用:
dataframe_a[dataframe_a.items.isin(dataframe_b.id)]
如何在 list 列中实现这一点?
请您参考如下方法:
我们可以使用issubset
l=[set(x).issubset(dfb.id.tolist())for x in df['items']]
Out[64]: [True, False, False]
然后
df=df[l]
