gpt4 book ai didi

python - 在 .apply() 中使用 for 循环来处理 pandas 数据帧

转载 作者:行者123 更新时间:2023-12-01 05:20:31 25 4
gpt4 key购买 nike

我想删除列表中的所有项目。我尝试使用下面的代码来迭代 pandas .apply() 上下文中列表中的所有项目。然而,函数remove(x)似乎只去remove_l中的第一项。我怎样才能确保它遍历remove_l中的所有项目?

我知道我可以创建单独的 if 语句,我已经这样做了,但我想使用 for 循环来实现,以防列表变得更长。

remove_l = [r'[A-Za-z]+(?:\/)', r'Today, ', '-']

def remove(x):
for phrase in remove_l:
if re.search(phrase, x):
if phrase == '-':
new = x.replace(phrase, ' ')
else:
new = x[re.search(phrase, x).span()[1]:].strip()
return new
else:
return x


#check up on items
#60, 330, 347, 411, 647
#idx = nocountries_df[nocountries_df.Name.str.contains('\/')].Name.index
nocountries_df.Name.apply(lambda x: remove(x))

最佳答案

这是一个缩进问题,当它遇到第一个返回值(在 for 循环中)时,它会返回该值:

def remove(x):
for phrase in remove_l:
if re.search(phrase, x):
if phrase == '-':
new = x.replace(phrase, ' ')
else:
new = x[re.search(phrase, x).span()[1]:].strip()
return new # <- returns here (in first phase)
else:
return x # <- or returns here (in first phase)

您想要在 for 循环之后返回,最简单的方法可能是在 for 循环中更改 x:

def remove(x):
for phrase in remove_l:
if re.search(phrase, x):
if phrase == '-':
x = x.replace(phrase, ' ')
else:
x = x[re.search(phrase, x).span()[1]:].strip()
return x

关于python - 在 .apply() 中使用 for 循环来处理 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22490285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com