【发布时间】:2014-09-30 18:36:44
【问题描述】:
现在,我正在尝试创建一个函数,该函数根据 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
但是,现在,这个函数返回的只是“无”。我做错了什么?
【问题讨论】:
-
对不起,您只是想过滤掉模式中的单词还是过滤掉模式中没有的单词?无论如何不清楚您要做什么,但是如果没有分配,这条线什么也不做:
df[df['words'].str.contains(pattern)==False]应该是df = df[df['words'].str.contains(pattern)==False]
标签: python-3.x pandas