繁体   English   中英

过滤熊猫中的数据框

[英]filtering a data frame in pandas

我有一个数据框,如下所示:

dic ={'wteam': [2, 3, 4, 2, 4], 'lteam': [3, 4, 2, 4, 2]}
pd.DataFrame(dic) 

   lteam  wteam
0    3      2
1    4      3
2    2      4
3    4      2
4    3      4

我需要一个新的数据框,其中包含2个lteam或wteam。

        lteam  wteam
    0    3      2
    2    2      4
    3    4      2

如何在熊猫中做到这一点?

您起始df的输出是错误的,最后一行应该是[2,4],除此之外,我们可以在布尔过滤的df生成的索引上调用loc并删除所有NaN值:

In [15]:

df.loc[df[df==2].dropna(thresh=1).index]
Out[15]:
   lteam  wteam
0      3      2
2      2      4
3      4      2
4      2      4

分解如下:

In [16]:

df[df==2]
Out[16]:
   lteam  wteam
0    NaN      2
1    NaN    NaN
2      2    NaN
3    NaN      2
4      2    NaN
In [17]:

df[df==2].dropna(thresh=1)
Out[17]:
   lteam  wteam
0    NaN      2
2      2    NaN
3    NaN      2
4      2    NaN

一种更简洁的方法是提供2个布尔条件:

In [18]:

df[(df.lteam == 2) | (df.wteam == 2)]
Out[18]:
   lteam  wteam
0      3      2
2      2      4
3      4      2
4      2      4

这需要使用按位| 运算符和由于运算符优先级引起的条件括号

如果您有很多列,则第一种方法会更好,但对于简单的数据集,则第二种方法会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM