簡體   English   中英

檢查 pandas dataframe 是否包含項目列表中的特定字符串

[英]Check if pandas dataframe contains specific string from a list of items

我有一個清單

my_list = ['element1 line','element2 ','element3', 'element4 line',....]

我有一個 pandas dataframe 有df [ Sentences ] 列和df['flag']

df
    Sentences               flag
0   abcd    
1   efgh    
2   element1 ijkl           
3   mnop element3 element4      
4   qrst

我想迭代到列Sentences的 dataframe 的每一行。 如果 my_list 中的任何元素出現在Sentences中,則相應行中的df['flag']列應為 1。 如果該行的句子字符串中不存在任何元素,則該行的df['flag']應該為 0。

預期 output:

df
    Sentences                flag
0   abcd                      0
1   efgh                      0
2   element1 ijkl             1 
3   mnop element3 element4    1     
4   qrst                      0

您需要使用循環:

df['flag'] = [int(any(w in my_list for w in x.split())) for x in df['Sentences']]

output:

                Sentences  flag
0                    abcd     0
1                    efgh     0
2           element1 ijkl     1
3  mnop element3 element4     1
4                    qrst     0

請注意,您可以使用純 pandas,但這慢得多:

df['flag'] = (df['Sentences']
              .str.split()
              .explode().isin(my_list)
              .groupby(level=0).any().astype(int)
              )

您也可以在沒有 2 個 for 循環的情況下嘗試此操作:

df['flag'] = df['Sentences'].str.split().map(set).
                             apply(lambda x: any(x.intersection(my_list))*1)

嗨,可以返回列表的值而不是僅返回 true 或 false 嗎?

就像是:

0 abcd
1個
2 元素 1 ijkl 元素 1 3 mnop 元素 3 元素 4 元素 3 4 qrst

謝謝

暫無
暫無

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

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