3 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
您很接近,僅將空集的集轉(zhuǎn)換為 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']]]

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
isin重新創(chuàng)建列表列后檢查
df[pd.DataFrame(df.a.tolist()).isin(mylist).any(1)]
Out[23]:
a
0 [test, whatever]

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
這對我有用:
mylist = ["test", "new"]
df = pd.DataFrame([[["test", "whatever"]], [["tes", "test_in"]], [["new2", "new1"]]], columns=["a"])
print(df)
def func(x):
for e in x[0]:
if(e in mylist):
return True
else:
continue
return False
df = df.loc[df.apply(lambda x: func(x), axis=1), :]
print(df)
添加回答
舉報(bào)