我想在panda表中应用模式识别,如果作者姓名与特定模式匹配,则将其代码设置为有效。但是,我只得到不正确的值。我迭代每一行,但是我只想在对应单元格的值为0时应用lambda函数。你知道吗
Author valid
Andi 0
Tomasius 0
Anke 0
这是我的密码:
df["valid"] =0
def author_check(x, y):
if str(x) == y:
return 1
else:
return 0
import re
author_list =["Andi","Tomasius"]#]
regex_list = [".*nd*"]
for i in range(len(author_list)):
for x in range(len(regex_list)):
r = re.compile(regex_list[x])
newlist = filter(r.match, author_list)
x = len(list(newlist))
if x>0:
df['brand'] = df.apply(lambda row: author_check(row['Author'], author_list[i]), axis=1 )
一旦我运行这个,我就会
Author valid
Andi 0
Tomasius 1
Anke 0
但我想
Author valid
Andi 1
Tomasius 0
Anke 0
我做错了什么?任何暗示都将不胜感激!你知道吗
干杯, 安迪
你有一些问题。首先,您的正则表达式将同时匹配} 和^{} 以更快更简洁的方式执行函数。你知道吗
Andi
和Anke
,因为.*nd*
本质上是说“匹配0个或多个非换行符、一个n
字符和0个或多个d
字符”。其次,使用循环并没有利用Panda的功能。相反,我建议使用^{使用dataframe的示例:
以下代码将为您提供所需的内容:
如果您的查询更复杂,并且需要正则表达式(根据您的注释),您也可以使用它:
相关问题 更多 >
编程相关推荐