这是数据集:
import pandas as pd
test = pd.DataFrame({"par1": [1, 2, 3, 4, 5],
"par2": [11, 12, 13, 14, 15],
"par3": [21, 22, 23, 24, 25],
})
test
Out[45]:
par1 par2 par3
0 1 11 21
1 2 12 22
2 3 13 23
3 4 14 24
4 5 15 25
如何获得满足一组条件的第一行?
具体来说,我有一组数字 p1、p2、p3。如何选择条件 par1>p1 & par2>p2 & par3>p3 为真的第一行?例如,找到一个适合尺寸为 p1、p2、p3 的对象的框。
这是我的解决方案:
test[(test["par1"]>2) & (test["par2"]>13) & (test["par3"]>1)].iloc[0, :]
Out[43]:
par1 4
par2 14
par3 24
Name: 3, dtype: int64
有人怀疑 Pandas 有更好的解决方案。这就像使用 break 按条件退出循环。选择所有满足条件的记录显然是多余的。
“更有效”的解决方案不会被矢量化,因为 你必须使用一个循环。因此,它可能比“效率较低”要慢。;)
或者,您可以使用 Numba:
测试:
对于超过 1,000,000 个条目的数据集,我建议使用 GPU (
numba + cuda)或cupy.PS 我会把大型阵列的工作速度的比较留给你)
帧性能对比:
(5000, 3)熊猫
努巴
莫丁[射线]
结论
PS我
modin[ray]对广告的期望更高。