我有一個數據幀「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 +行)
謝謝
我有一個數據幀「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 +行)
謝謝
如果我們比較的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更快,更「Pandaic」版本:
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
我們應該如何都能平等地對待行,其中一個或兩個值是'0'? – MaxU
這種情況不會發生在我正在使用的數據中,但謝謝。 –