识别包含Python列表中字符串的数据帧列的所有行的最有效方法是什么?

2024-09-25 02:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想标识包含列表中字符串的数据框列的所有行。对于一个字符串,可以通过

df['Column Name'].str.contains('string_to_find')

但是,.str.contains不接受列表作为输入,这会迫使我遍历列表。我找到的解决方案如下:

import pandas as pd

df = pd.DataFrame(['Mexico', 'Province of Ontario', 'NY', 'Alaska', 'ONT', 'Quebec', 'QC', 'Quebec (Province)'],
                  columns=['Province'])

province_filter_list = ['ONT', 'QC', 'Quebec']

df['Indicator'] = False
for x in province_filter_list:
    df['Indicator'] = df['Indicator'] | df['Province'].str.contains(x, case=False)

我想做的是

df['Indicator'] = df['Province'].str.contains(province_filter_list, case=False)

输出应如下所示:

index Province             Indicator
0     Mexico               False
1     Province of Ontario  True
2     NY                   False
3     Alaska               False
4     ONT                  True
5     Quebec               True
6     QC                   True
7     Quebec (Province)    True

我的问题是:有没有比使用.str.contains的for循环更好更简单的方法


Tags: 字符串falsetruedf列表filterlistindicator