python数据框 - 删除不需要的Unicode字段

问题描述:

我在数据框中有一列“名称”。 我要删除所有的行,它的名字并不在names_all:python数据框 - 删除不需要的Unicode字段

names_all = ['alice', 'bob', 'david'] 

所有在names_all字符串和数据帧是unicode字符串。

我写的代码:

for index, row in history.iterrows(): 
    if row['name'] not in names_all: 
     history.drop(index, inplace=True) 

但由于某些原因,它是做怪异的东西。它丢失了太多的行(丢弃了所有1700行的第一行和更多)。 在我将所有的字符串编码为unicode之前,它也做了一些奇怪的事情,但没有那么多。

你为什么不只是选择那些符合names_all说:

history = history.loc[history.name.isin(names_all)] 
+1

对我来说似乎他想删除不在列表中的行,他的代码使用'not in' – zipa

+0

是的,我错误地理解了这个问题;) – MaxU

解决方案1:

history = history[history['name'].isin(names_all)] 

解决方案2:

history = history.query("name in @names_all"] 
+0

我不知道这种方法,但它不起作用。它混淆了整个数据帧。 – sheldonzy

+0

@sheldonzy,对不起,我误解了你的问题。请现在检查它... – MaxU