python Dataframe 根据某一列的值来删除多行

python Dataframe 根据某一列的值来删除多行

在Dataframe中,有的时候想根据某一列值来删除。

方法一:你可以做负isin()索引:

In [57]: df
Out[57]:
   a  b  c
0  1  2  2
1  1  7  0
2  3  7  1
3  3  2  7
4  1  3  1
5  3  4  2
6  0  7  1
7  5  4  3
8  6  1  0
9  3  2  0
In [58]: my_list = [1, 7, 8]

In [59]: df.loc[~df.b.isin(my_list)]
Out[59]:
   a  b  c
0  1  2  2
3  3  2  7
4  1  3  1
5  3  4  2
7  5  4  3
9  3  2  0

方法二:query

In [60]: df.query('@my_list not in b')
Out[60]:
   a  b  c
0  1  2  2
3  3  2  7
4  1  3  1
5  3  4  2
7  5  4  3
9  3  2  0

以前我使用的笨方法是循环删index的方法,在drou_index操作,当数据特别大的时候,特别慢。
换成上面的方法,速度很快!
人生苦短,我用python!!!


版权声明:本文为GhostintheCode原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。