根据 pandas 中的列表删除行 [英] Delete rows based on list in pandas

查看:114
本文介绍了根据 pandas 中的列表删除行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

node1    node2    weight  date


3         6     1        2002

2          7     1        1998

2          7     1        2002

2          8     1        1999

2         15     1        2002

9        15     1        1998

2         16     1        2003

2         18     1        2001

我要删除具有值[3, 7, 18]的行.这些值可以位于node1node2的任何行中.

I want to delete rows which have the values [3, 7, 18].These values can be in any of the rows node1 or node2.

推荐答案

In [8]: new = df[~df.filter(regex='^node').isin([3,7,18]).any(1)]

In [9]: new
Out[9]:
   node1  node2  weight  date
3      2      8       1  1999
4      2     15       1  2002
5      9     15       1  1998
6      2     16       1  2003

逐步:

In [164]: df.filter(regex='^node').isin([3,7,18])
Out[164]:
   node1  node2
0   True  False
1  False   True
2  False   True
3  False  False
4  False  False
5  False  False
6  False  False
7  False   True

In [165]: df.filter(regex='^node').isin([3,7,18]).any(1)
Out[165]:
0     True
1     True
2     True
3    False
4    False
5    False
6    False
7     True
dtype: bool

In [166]: ~df.filter(regex='^node').isin([3,7,18]).any(1)
Out[166]:
0    False
1    False
2    False
3     True
4     True
5     True
6     True
7    False
dtype: bool

In [167]: df[~df.filter(regex='^node').isin([3,7,18]).any(1)]
Out[167]:
   node1  node2  weight  date
3      2      8       1  1999
4      2     15       1  2002
5      9     15       1  1998
6      2     16       1  2003

这篇关于根据 pandas 中的列表删除行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆