这是我之前发布的一个问题的扩展:Python Sum lookup dynamic array table with df column
我目前正在研究一种有效地将决策变量映射到数据框的方法。主 DF 和查找表的长度将是动态的(分别为 +15,000 行和 +20 行)。因此希望不要循环执行此操作,但很高兴听到建议。
DF (DF1) 大致如下所示,我想在其中查找/搜索决策。
在单独的 DF (DF0) 上找到决策值。
例如:第一个 DF1["ValuesWhereXYcomefrom"] 值为 6.915,在键表上介于 3.8>=(value)>7.4 之间,因此对应的值 DF0["Decision"] 为 -1。然后重复该过程,直到每一行都映射到一个决策。
我正在考虑使用 python bisect 库,但还没有采用任何可行的解决方案并且还使用循环。现在我想知道我是否在错误地看待问题,因为映射和循环 15k 行非常耗时。
示例主要数据 (DF1):
时间 | 值0 | 价值1 | 价值2 | XY 来自哪里的价值观 | Value_toSum | 决策图 |
---|---|---|---|---|---|---|
1 | 41.43 | 6.579482077 | 0.00531021 | |||
2 | 41.650002 | 6.756817908 | 46.72466411 | 6.915187703 | 0.001200456 | -1 |
3 | 41.700001 | 6.221966706 | 11.64727001 | 1.871959552 | 0.000959257 | -1 |
4 | 41.740002 | 6.230847055 | 46.92753343 | 7.531485368 | 0.006228989 | 1 |
5 | 42 | 6.637399856 | 8.031374656 | 1.210018204 | 0.010238095 | -1 |
6 | 42.43 | 7.484894608 | 16.24547568 | 2.170434793 | -0.007777563 | -1 |
7 | 42.099998 | 7.595291765 | 38.73871244 | 5.100358702 | 0.003562993 | -1 |
8 | 42.25 | 7.567457423 | 37.07538953 | 4.899319211 | 0.01088755 | -1 |
9 | 42.709999 | 8.234795546 | 64.27986403 | 7.805884636 | 0.005151042 | 1 |
10 | 42.93 | 8.369526407 | 24.72700129 | 2.954408659 | -0.003028209 | -1 |
11 | 42.799999 | 8.146653099 | 61.52243361 | 7.55186613 | 0 | 1 |
示例键表 (DF0):
价值X | 价值Y | 和 | 决定 |
---|---|---|---|
0.203627201 | 3.803627201 | 0.040294925 | -1 |
3.803627201 | 7.403627201 | 0.031630668 | -1 |
7.403627201 | 11.0036272 | 0.011841521 | 1 |