现在,我正在尝试创建一个根据excel文件中列出的某些条件删除行的函数。这个excel文件(坏词2)包含应从DF中删除的单词对,如下所示:
header
the man
is a
我的代码的第二部分是我试图应用的功能
import pandas as pd
data = ({'words':['the man','is a','good guy']})
df = pd.DataFrame(data)
xl = pd.ExcelFile('C:/Users/j/Desktop/bad words2.xlsx')
badwords = xl.parse()
badwords = badwords['header']
def removewords(x):
for w in x:
pattern = '^'+''.join('(?=.*{})'.format(word) for word in w.split())
df[df['words'].str.contains(pattern)==False]
df.dropna()
print(removewords(badwords))
理想情况下,在应用此函数结束时,我最终应该只包含一个DF:
words
good guy
但是,现在,此函数返回的所有内容都是“无”。我做错了什么?
答案 0 :(得分:1)
一些想法:
df
。df
在函数范围内不可用于赋值。您可以将其作为参数传递。 (请注意:这不是您的代码的问题,而是建议的解决方案。)或者,您可以在函数中实例化一个新的DataFrame。 尝试改为:
def removewords(df,x):
for w in x:
pattern = '^'+''.join('(?=.*{})'.format(word) for word in w.split())
df = df[df['words'].str.contains(pattern)==False]
df = df.dropna()
return df
print(removewords(df,badwords))