Python/Pandas:从列表中的字符串匹配上的数据框中删除(而不是筛选!)行
包含有关如何筛选行的信息。但是,我想知道如何根据列表中的字符串匹配从数据帧中删除而不是筛选行 最快的方法是什么 编辑:下面是一个使用另一个线程中提供的数据集的示例Python/Pandas:从列表中的字符串匹配上的数据框中删除(而不是筛选!)行,python,pandas,Python,Pandas,包含有关如何筛选行的信息。但是,我想知道如何根据列表中的字符串匹配从数据帧中删除而不是筛选行 最快的方法是什么 编辑:下面是一个使用另一个线程中提供的数据集的示例 >>> import pandas as pd >>> >>> df = pd.read_csv('data.csv') >>> df.head() fName lName email title 0 Joh
>>> import pandas as pd
>>>
>>> df = pd.read_csv('data.csv')
>>> df.head()
fName lName email title
0 John Smith jsmith@gmail.com CEO
1 Joe Schmo jschmo@business.com Bagger
2 Some Person some.person@hotmail.com Clerk
给出的一个解决方案涉及过滤掉一些行,如下所示:
In [6]: to_drop = ['Clerk', 'Bagger']
df[~df['title'].isin(to_drop)]
Out[6]:
fName lName email title
0 John Smith jsmith@gmail.com CEO
这是可行的,但数据框仍包含我要永久删除的行:
In [7]: df.head()
Out[7]:
fName lName email title
0 John Smith jsmith@gmail.com CEO
1 Joe Schmo jschmo@business.com Bagger
2 Some Person some.person@hotmail.com Clerk
我很快就想出来了。对于这个看似幼稚的问题,我深表歉意,但希望它能帮助像我这样的Python新手 正如@mattmilten所提出的解决方案,简单地将过滤的输出分配给相同的或新的数据帧。就是
In [3]: to_drop = ['Clerk', 'Bagger']
df = df[~df['title'].isin(to_drop)]
df
Out[3]:
fName lName email title
0 John Smith jsmith@gmail.com CEO
好的,您只需将筛选的输出分配给一个新的数据帧。或者将on与
inplace=True
一起使用……您能否提供一个输入和所需的输出,以便我们可以测试您的问题?@ysearka。好主意。请参阅上面的编辑。如果您不关心索引,只需为筛选器分配一个新变量并重置索引即可:new\u df=df[~df['title'].isin(to_drop)]