簡體   English   中英

如何檢查 Pandas 列是否具有字符串列表中的值?

[英]How to check if Pandas column has value from list of string?

我有一個 dataframe 和一個列表

df = pd.DataFrame({'IDs':[1234,5346,1234,8793,8793],
                    'Names':['APPLE ABCD ONE','APPLE ABCD','NO STRAWBERRY YES','ORANGE AVAILABLE','TEA AVAILABLE']})

kw = ['APPLE ABCD', 'ORANGE', 'LEMONS', 'STRAWBERRY', 'BLUEBERRY', 'TEA COFFEE']

我想創建一個新的列flag ,如果Names列包含來自kw的關鍵字,則標志將為 1,否則為 0。

預期 Output:

    IDs     Names               Flag
0   1234    APPLE ABCD ONE      1
1   5346    APPLE ABCD          1
2   1234    NO STRAWBERRY YES   1
3   8793    ORANGE AVAILABLE    1
4   8793    TEA AVAILABLE       0

我可以使用以下代碼獲得 output:

ind=[]
for idx, value in df.iterrows():
    x = 0
    for u in kw:
        if u in value['Names']:
            ind.append(True)
            x = 1
            break
    if x == 0:
        ind.append(False)

df['flag'] = ind

是否有另一種方法可以避免 for 循環並使其更有效?

使用applylambda例如:

df['Names'].apply(lambda x: any([k in x for k in kw]))

0     True
1     True
2     True
3     True
4    False
Name: Names, dtype: bool

您可以使用熊貓的isin函數

df['Names'].isin(kw)

嗨,可以從列表中返回值嗎?

ID 名稱 標志 0 1234 APPLE ABCD ONE APPLE 1 5346 APPLE ABCD APPLE 2 1234 NO STRAWBERRY YES STRAWBERRY 3 8793 ORANGE AVAILABLE ORANGE 4 8793 TEA AVAILABLE

暫無
暫無

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

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