当前位置: 首页 > 知识库问答 >
问题:

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

淳于禄
2023-03-14

我有一个数据框和一个列表

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']

我想创建一个新列标志,这样如果名称列包含kw中的关键字,标志将为1,否则为0。

预期输出:

    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

我能够使用下面的代码得到输出:

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

有没有一种替代方法可以避免循环并使其更高效?

共有2个答案

笪栋
2023-03-14

你可以使用熊猫的isin功能

df['Names'].isin(kw)
贡念
2023-03-14

使用应用lambda,如:

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
 类似资料:
  • 问题内容: 如果我有这样的框架 我想检查这些行中是否包含某个单词,我只需要这样做。 输出: 如果我决定列出一个清单 如何检查列表中的行是否包含某个单词? 问题答案: 该方法接受正则表达式模式: 由于支持正则表达式模式,因此您还可以嵌入标志:

  • 如果我有这样一个框架 我想检查这些行中是否有包含某个单词的行,我必须这样做。 输出: 如果我决定列一个清单: 如何检查行是否包含列表中的某个单词?

  • 我知道如何检查pandas中的一列是否有特定的字符串,就像post-check中解释的那样,如果pandas中的dataframe列中包含某个值。但是,我想计算包含特定字符串的行数,其中包含一些可变性。例如,我不仅要检查行中是否包含葡萄牙,还要检查行中是否包含葡萄牙或葡萄牙。有没有办法做到这一点? 这就是我停下来的地方(我不仅试着数数,而且还试着看到了百分比):

  • 问题内容: 如何检查字符串中是否包含字符列表,例如“ ABCDEFGH”,如何检查字符串中是否有字符列表。 问题答案: 在Java中使用正则表达式检查在Java中使用 正则表达式 例如:

  • 问题内容: 我之前已经找到了这个问题的一些答案,但是对于当前的Python版本似乎已经过时了(或者至少它们对我不起作用)。 我想检查子字符串是否包含在字符串列表中。我只需要布尔结果。 我找到了这个解决方案: 我希望从这段代码中得到一个价值。如果单词是“ der”,则输出应为。 但是,结果是一个生成器函数,我找不到找到该值的方法。 任何想法? 问题答案: 您可以导入从的情况下,它是由一些其他的替代: