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]
的行。这些值可以位于任何行node1
或node2
中。
答案 0 :(得分:5)
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