删除包含列表中值的行

时间:2014-02-18 20:39:40

标签: python filter pandas python-2.x delete-row

我正在尝试过滤掉大型数据框,并且不希望在“产品说明”列中包含某些值的行。

我看过了 how can i remove multiple rows with different labels in one command in pandas?

Remove rows not .isin('X')

并应用了代码。然而,

  df[-df['label'].isin(List)] 

对我不起作用,我不知道该怎么做。

这是我的确切代码:

List2 = ['set up','setup','and install',....etc etc]

(我也试过用括号代替括号的List2 =(.. iec),但它没有用)

Computers_No_UNSPSC =Compters_No_UNSPSC[- Computers_No_UNSPSC['Product Description'].isin(List2)]

(我也试过用〜而不是 - 哪个不起作用)

我做错了什么/丢失了。当我查看我的Computers_No_UNSPSC数据帧时,我发现在我创建的列表中仍然有行包含单词。它似乎没有过滤掉我不想要的东西。

感谢您的帮助!

**我相信List2正在运作。我有数据行,人们在这里描述他们的电脑购买。我希望所有购买的电脑都不是“电脑维修”或“电脑软件”。 所以我创建了一个列表,似乎捕获了我不想要的外围设备/事物......当我说

print List2 

我得到了

['set up', 'setup', 'and install', ' server', 'labor', 'services', 'processing', 'license', 'renewal', 'repair', 'case', 'speakers', 'cord', 'support', 'cart', 'docking station', 'components', 'accessories', 'software', ' membership', ' headsets ', ' keyboard', ' mouse', ' peripheral', ' part', ' charger', ' battery', ' drive', ' print', ' cable', ' supp', ' usb', ' shelf', 'disk', 'memory', 'studio', 'training', 'adapter', 'wiring', 'mirror']

这是否意味着它将每个字符串识别为单词?所以当我应用过滤器时,它会过滤List2中的每个单词吗?

A =A[-A['Product Description'].isin(List2)] 

这似乎是不起作用的部分,但我不知道我哪里出错了。

1 个答案:

答案 0 :(得分:1)

我不认为你理解它是如何工作的,如果label ==那个列表中的任何内容......如果标签中包含该列表中的任何内容,则不会...

听起来像标签看起来像

label = "set up computer"

isin会查找完全匹配...不是部分匹配

label in ["set","up","computer"] #is false for example
"set" in ["set","up","computer"] #is true for example

注意:这显然不是pandas isin但是效果相同......

做你想要的,你需要检查标签

的单词列表
any(word in label for word in blacklisted_words)

这会慢得多