如果该列中有任何列包含某个值,则在Pandas Dataframe中删除一行 [英] Drop a row in a Pandas Dataframe if any column contains a certain value, in said row

查看:506
本文介绍了如果该列中有任何列包含某个值,则在Pandas Dataframe中删除一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我们要删除一行中的任何列都缺少值的行,我们可以这样做:

If we want to drop a row in which any column has a missing value we can do this:

df.dropna(axis = 0, how = 'any', inplace = True)

如果我们要删除一行,其中该行的任何列都具有某个值(假设某列的值是"turtle"),我们该怎么做?

How do we do the same if we want to drop a row in which any column of that row, has a certain value (let's say a column has the value "turtle")?

第x行的某些列包含乌龟",因此我们将其删除.

Some column of row x contains "turtle" so we drop it.

推荐答案

演示:

样本DF:

In [7]: import string

In [8]: df = pd.DataFrame(np.random.randint(100, size=(10,10)), columns=list(string.ascii_letters[:10]))

In [9]: df
Out[9]:
    a   b   c   d   e   f   g   h   i   j
0  95  79  14  64  97   3   0  49  84   2
1  52  82  72  40  55  26  21  69   2  35
2  30  63  27  63  14  23  70  62  83  80
3  23  90  96  43  75  23  27  47  83  40
4  82  87  63  37  36  58  88  18  50  29
5  92  29  93   6  62  85  87  74  21  32
6  23  64  19  22  50  86  51  93  46   1
7  56   0   8  46   1  56  82  15  55  45
8  67  35  83  65  63  58  48  85  75  90
9  12   7  45  28  33  98  42  93  78  12

删除所有至少包含一个0的行:

let's drop all rows containing at least one 0:

In [10]: df.eq(0)
Out[10]:
       a      b      c      d      e      f      g      h      i      j
0  False  False  False  False  False  False   True  False  False  False
1  False  False  False  False  False  False  False  False  False  False
2  False  False  False  False  False  False  False  False  False  False
3  False  False  False  False  False  False  False  False  False  False
4  False  False  False  False  False  False  False  False  False  False
5  False  False  False  False  False  False  False  False  False  False
6  False  False  False  False  False  False  False  False  False  False
7  False   True  False  False  False  False  False  False  False  False
8  False  False  False  False  False  False  False  False  False  False
9  False  False  False  False  False  False  False  False  False  False

In [11]: res = df[~df.eq(0).any(1)]

In [12]: res
Out[12]:
    a   b   c   d   e   f   g   h   i   j
1  52  82  72  40  55  26  21  69   2  35
2  30  63  27  63  14  23  70  62  83  80
3  23  90  96  43  75  23  27  47  83  40
4  82  87  63  37  36  58  88  18  50  29
5  92  29  93   6  62  85  87  74  21  32
6  23  64  19  22  50  86  51  93  46   1
8  67  35  83  65  63  58  48  85  75  90
9  12   7  45  28  33  98  42  93  78  12

这篇关于如果该列中有任何列包含某个值,则在Pandas Dataframe中删除一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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