gpt4 book ai didi

python - 根据列表列过滤 df 至少包含列表中的一个元素(2 个列表的交集)

转载 作者:行者123 更新时间:2023-11-28 21:33:13 25 4
gpt4 key购买 nike

假设我有:

mylist = ["test", "new"]
df = pd.DataFrame([[["test", "whatever"]], [["tes", "test_in"]], [["new2", "new1"]]], columns=["a"])
df

a
0 [test, whatever]
1 [tes, test_in]
2 [new2, new1]

我想过滤并只获取在 mylist 中至少有一个值的行:

    a
0 [test, whatever]

我做不到:df.query("a.str.contains('|'.join(@mylist))", engine='python') 因为那时我得到了部分匹配。

我在想:

 df[df.apply(lambda x: set(x['a']) & set(mylist), axis=1)]

但这行不通。

最佳答案

你很接近,只将空集的集合转换为 bool 为 False,否则为 True:

df = df[df['a'].apply(lambda x: bool(set(x) & set(mylist)))]
print (df)
a
0 [test, whatever]

备选方案:

df = df[[bool(set(x) & set(mylist)) for x in df['a']]]

或者:

df = df[[bool(set(x).intersection(mylist)) for x in df['a']]]

关于python - 根据列表列过滤 df 至少包含列表中的一个元素(2 个列表的交集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com