繁体   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