我的数据框如下:
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
我如何在熊猫中这样做?
答案 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
运算符和由于运算符优先级而导致的条件括号
如果你有很多列,第一种方法会更好但是对于你的简单数据集,那么后一种方法就可以了。