当前位置:  开发笔记 > 编程语言 > 正文

熊猫 - 比较正/负值

如何解决《熊猫-比较正/负值》经验,为你挑选了1个好方法。

我有一个数据帧"df":

    x  y
0   1  -1
1  -2  -3
2   3   4
3   4   5
4   9   6

我试图确定x和y值的百分比在正面或负面方面是一致的.因此,如果x为正且y为正,则这将是正确的答案.如果x和y都是负数,那就是正确的.如果x和y不同,那就错了.有没有快速的方法来做到这一点?最后,我只是想知道所有行中有多少百分比都有正确的答案.

(ps实际数据帧中有1M +行)

谢谢



1> MaxU..:

如果我们比较一个产品x*y >= 0- 这应该给我们"good"行:

In [19]: df['x'].mul(df['y']).ge(0)
Out[19]:
0    False
1     True
2     True
3     True
4     True
dtype: bool


In [20]: df.loc[df['x'].mul(df['y']).ge(0)]
Out[20]:
   x  y
1 -2 -3
2  3  4
3  4  5
4  9  6

In [21]: len(df.loc[df['x'].mul(df['y']).ge(0)])/len(df)
Out[21]: 0.8

或者@NickilMaveli提出的更快,更"熊猫"的版本:

In [23]: df['x'].mul(df['y']).ge(0).mean()
Out[23]: 0.80000000000000004

同样的想法,但这次使用df.eval()方法:

In [27]: df.eval('x * y >= 0').mean()
Out[27]: 0.80000000000000004


`(df.x.mul(df.y).ge(0)).mean()`也许更快.
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有