Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据字符串列表在df col中查找字符串匹配?_Python_Pandas - Fatal编程技术网

Python 如何根据字符串列表在df col中查找字符串匹配?

Python 如何根据字符串列表在df col中查找字符串匹配?,python,pandas,Python,Pandas,我有一份1000家公司的名单和一份本年度所有以前交易的df。对于每个匹配项,我希望在新列(df$Covered)中创建一个新行值(True) 我不知道为什么我总是得到下面的错误。我试着研究这些问题,但到目前为止运气不好 代码示例:当我设置regex=False时 Customer_List = ['3M','Cargill,'Chili's,---] df['Covered'] = df[df['End Customer Name'].str.contains('|'.join(Custo

我有一份1000家公司的名单和一份本年度所有以前交易的df。对于每个匹配项,我希望在新列(df$Covered)中创建一个新行值(True)

我不知道为什么我总是得到下面的错误。我试着研究这些问题,但到目前为止运气不好

代码示例:当我设置regex=False时

Customer_List = ['3M','Cargill,'Chili's,---]

df['Covered'] = df[df['End Customer Name'].str.contains('|'.join(Customer_List),case=False, na=False, regex=False)]
ValueError:传递的项目数错误32,放置意味着1

代码示例:当我设置regex=True时

Customer_List = ['3M','Cargill,'Chili's,---]

df['Covered'] = df[df['End Customer Name'].str.contains('|'.join(Customer_List),case=False, na=False, regex=False)]
错误:177825位置的错误字符范围H-D

那么:

mask = df['End Customer Name'].isin(Customer_List)
df['covered'] = 0
df.loc[mask, 'covered'] = 1

谢谢大家,这与我的客户名单上有特殊字符有关,所以我需要使用map(re.escape)

下面的链接帮助了我

您可以添加一些样本数据吗?可以将df.sample()的O/p发布到_dict()-这将有助于重新创建/测试问题。df['End Customer Name']是100k+行的名称,而Customer_List是一个包含1000个公司名称的列表,这有帮助吗?为什么说“regex=False”?您是通过将术语与“bar”符号意思或regex连接在一起来创建正则表达式。谢谢Scott,我不知道我是否需要文字字符串或regex。您认为这与具有特殊字符有关吗?谢谢纳税人的钱,但是有许多行中的客户列表是“最终客户名称”字符串中的子字符串,这就是我使用contains的原因。例如:最终客户名称-苹果公司、苹果公司、苹果公司客户列表[“苹果公司”]