从numpy数组中获取基于列值的行号

时间:2019-12-12 12:27:12

标签: python pandas numpy

我是numpy的新手,需要一些帮助来解决我的问题。 我使用dtypes从二进制文件中读取记录,然后选择3列

df = pd.DataFrame(np.array([(124,90,5),(125,90,5),(126,90,5),(127,90,0),(128,91,5),(129,91,5),(130,91,5),(131,91,0)]), columns =  ['atype','btype','ctype'] )

给出

   atype    btype   ctype
0    124       90       5
1    125       90       5
2    126       90       5
3    127       90       0
4    128       91       5
5    129       91       5
6    130       91       5
7    131       91       0

'atype'目前对我来说并不重要。 但是我想要的是 (x,90,5)出现在第二列和第三列 (x,90,0)出现在第二和第三列 当(x,91,5)出现在第二列和第三列中时 和(x,91,0)出现在第二和第三列 等

有7个变量,例如90,91,92,93,94,95,96,相应地,第三列中的值为5或0。

参赛作品为100万。因此无论如何都可以在没有for循环的情况下找到它们。

1 个答案:

答案 0 :(得分:1)

使用熊猫,您可以尝试以下操作。

df[(df['btype'].between(90, 96)) & (df['ctype'].isin([0, 5]))]

使用您的示例。如果某些值已更改,例如df

   atype    btype   ctype
0    124       90       5
1    125       90       5
2    126        0       5
3    127       90     100
4    128       91       5
5    129        0       5
6    130       91       5
7    131       91       0

然后使用上面的解决方案,返回以下内容。

   atype    btype   ctype
0    124       90       5
1    125       90       5
4    128       91       5
6    130       91       5
7    131       91       0