簡體   English   中英

檢查列是否包含列表中的任何str

[英]check if a columns contains any str from list

我嘗試使用any()檢查該列是否包含列表中的任何字符串,並使用相應的結果創建一個新列

df_data = pd.DataFrame({'A':[2,1,3], 'animals': ['cat, frog', 'kitten, fish', 'frog2, fish']})
cats = ['kitten', 'cat']
df_data['cats'] = df_data.apply(lambda row: True if any(item in cats for item in row['animals']) else False, axis = 1)

我得到了這些結果,但我不明白為什么前兩行它為False:

   A       animals   cats
0  2     cat, frog  False
1  1  kitten, fish  False
2  3   frog2, fish  False

我希望僅在最后一行獲得False

隨着熊貓,你應該盡你最好不要使用循環或應用,我使用的DataFrame的構造與isinany

df_data['cats']=pd.DataFrame(df_data.animals.str.split(', ').tolist()).isin(cats).any(1)
df_data
   A       animals   cats
0  2     cat, frog   True
1  1  kitten, fish   True
2  3   frog2, fish  False

翻轉你的迭代

df_data['cats'] = df_data.apply(lambda row: True if any([item in row['animals'] for item in cats]) else False, axis = 1)

print(df_data)
#    A       animals   cats
# 0  2     cat, frog   True
# 1  1  kitten, fish   True
# 2  3   frog2, fish  False

如果你仔細看

item in row['animals'] for item in cats

將遍歷cats ,看看物品是否在row['animals']

item in cats for item in row['animals']

將遍歷row['animals']看看是否值row['animals']是貓列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM