过滤pandas中的数据帧

时间:2015-03-09 10:21:45

标签: python python-2.7 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

我需要一个新的数据框,在lteam或wteam中有2个。

        lteam  wteam
    0    3      2
    2    2      4
    3    4      2

我如何在熊猫中这样做?

1 个答案:

答案 0 :(得分:4)

你的起始df的输出是错误的,最后一行应该是[2,4],除此之外我们可以在由布尔过滤的df生成的索引上调用loc加上drop {{1} }值:

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

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

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

这需要使用按位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 运算符和由于运算符优先级而导致的条件括号

如果你有很多列,第一种方法会更好但是对于你的简单数据集,那么后一种方法就可以了。