根据pandas python中的特定条件过滤行

时间:2018-03-21 11:53:10

标签: python-3.x pandas

我有一个数据帧df1:

site    cell
T96976  V96976A
T96976  V96976B
T96976  V96976C
T96976  V96976O
T96980  D96980A
T96980  D96980B
T96980  U96980C
T97750  D97750N
T97750  D97750A
T97750  D97750B
T97750  V97750O
T97760  V97760A
T97760  V97760B
T97777  L97777A
T97777  U97777B
T97777  V97777C
T99989  G99989P

我想要数据帧df2,这样如果我找到一个以' N'或者' O'或P'然后我必须删除所有具有相同站点的单元格。

因此我得到的数据帧df2应该是这样的:

site    cell
T96980  D96980A
T96980  D96980B
T96980  U96980C
T97760  V97760A
T97760  V97760B
T97777  L97777A
T97777  U97777B
T97777  V97777C

1 个答案:

答案 0 :(得分:0)

我认为需要:

sites = df.loc[df['cell'].str.contains('[NOP]$'), 'site']
#alternative
#sites = df.loc[df['cell'].str[-1].isin(['N','O','P']), 'site']
df = df[~df['site'].isin(sites)]
print (df)
      site     cell
4   T96980  D96980A
5   T96980  D96980B
6   T96980  U96980C
11  T97760  V97760A
12  T97760  V97760B
13  T97777  L97777A
14  T97777  U97777B
15  T97777  V97777C

<强>详细

print (sites)
3     T96976
7     T97750
10    T97750
16    T99989
Name: site, dtype: object

<强>解释

  1. 首先通过contains过滤获取NOP的所有网站($为字符串结尾的正则表达式)
  2. 然后按isin~
  3. 的倒置条件再次过滤