Python / Pandas:从列表中匹配字符串的数据框中删除(不过滤!)行

时间:2018-08-17 16:08:17

标签: python pandas

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

1 个答案:

答案 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