我正在尝试过滤掉大型数据框,并且不希望在“产品说明”列中包含某些值的行。
我看过了 how can i remove multiple rows with different labels in one command in pandas?
和
并应用了代码。然而,
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)]
这似乎是不起作用的部分,但我不知道我哪里出错了。
答案 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)
这会慢得多