如何根据特定文本从数据框中删除行

时间:2021-02-17 09:42:43

标签: python pandas dataframe pandas-groupby

我的数据框有几列,

<头>
Id 姓名 年龄
1 约翰坎普 25
2 理查德 35
3 约翰兰德尔 29
4 约翰卡梅隆 26
5 约翰·雅各布 28
6 奥利弗 24
7 尤金 22
8 约翰坎普 21
9 约翰·克拉克 29
10 约翰里克 21

预期输出:

<头>
Id 姓名 年龄
1 约翰坎普 25
2 理查德 35
4 约翰卡梅隆 26
6 奥利弗 24
7 尤金 27
8 约翰坎普 25
10 约翰里克 21

我需要删除那些以 John 开头但不是 (Camp、Cameron、Rick) 的名字,同时保留其余的名字。

  1. 约翰坎普
  2. 约翰·卡梅隆
  3. 约翰·里克

我只想删除不在上面给出的三个名字中的那些约翰,同时保留其他名字。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

使用 Series.str.endswith 与由 | 链接的姓氏的 htuple 用于按位 ORSeries.str.startswith~ 的反转掩码并在 boolean indexing 中过滤:

sur = ['Camp', 'Cameron', 'Rick']

df = df[df['Name'].str.endswith(tuple(sur)) | ~df['Name'].str.startswith('John')]
print (df)
   Id          Name  age
0   1     John Camp   25
1   2       Richard   35
3   4  John Cameron   26
5   6        Oliver   24
6   7        Eugene   22
7   8     John Camp   21
9  10     John Rick   21
相关问题