我有一个数据帧"df":
x y
0 1 -1
1 -2 -3
2 3 4
3 4 5
4 9 6
Run Code Online (Sandbox Code Playgroud)
我试图确定x和y值的百分比在正面或负面方面是一致的.因此,如果x为正且y为正,则这将是正确的答案.如果x和y都是负数,那就是正确的.如果x和y不同,那就错了.有没有快速的方法来做到这一点?最后,我只是想知道所有行中有多少百分比都有正确的答案.
(ps实际数据帧中有1M +行)
谢谢
如果我们比较一个产品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
Run Code Online (Sandbox Code Playgroud)
或者@NickilMaveli提出的更快,更"熊猫"的版本:
In [23]: df['x'].mul(df['y']).ge(0).mean()
Out[23]: 0.80000000000000004
Run Code Online (Sandbox Code Playgroud)
同样的想法,但这次使用df.eval()方法:
In [27]: df.eval('x * y >= 0').mean()
Out[27]: 0.80000000000000004
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |