【发布时间】:2022-11-07 14:09:46
【问题描述】:
我有一个大型数据集(约 5 Mio 行),其中包含机器学习训练的结果。现在我想检查结果是否达到“目标范围”。假设这个范围包含-0.25 和+0.25 之间的所有值。如果它在这个范围内,它是一个Hit,如果它低于Low,另一边是High。
我现在将创建这三列 Hit、Low、High 并计算适用条件的每一行并将1 放入此列,另外两列将变为0。之后,我会对这些值进行分组并总结它们。但是我怀疑肯定有更好更快的方法,比如分组的时候直接计算。
数据
import pandas as pd
df = pd.DataFrame({"Type":["RF", "RF", "RF", "MLP", "MLP", "MLP"], "Value":[-1.5,-0.1,1.7,0.2,-0.7,-0.6]})
+----+--------+---------+
| | Type | Value |
|----+--------+---------|
| 0 | RF | -1.5 | <- Low
| 1 | RF | -0.1 | <- Hit
| 2 | RF | 1.7 | <- High
| 3 | MLP | 0.2 | <- Hit
| 4 | MLP | -0.7 | <- Low
| 5 | MLP | -0.6 | <- Low
+----+--------+---------+
预期产出
pd.DataFrame({"Type":["RF", "MLP"], "Low":[1,2], "Hit":[1,1], "High":[1,0]})
+----+--------+-------+-------+--------+
| | Type | Low | Hit | High |
|----+--------+-------+-------+--------|
| 0 | RF | 1 | 1 | 1 |
| 1 | MLP | 2 | 1 | 0 |
+----+--------+-------+-------+--------+
【问题讨论】: