This thread 包含有关如何过滤出行的信息。但是,我想知道如何根据列表中的字符串匹配从数据框中删除而不是过滤行。
最快的方法是什么?
编辑:这是一个使用另一个线程中提供的数据集的示例。
>>> 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
答案 0 :(得分:0)
我很快就弄清楚了这一点。对这个看似幼稚的问题表示歉意,但希望它能对其他像我这样的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