我有一个数据框给出事件时间(以天为单位)以及与每个事件相关的值。
很抱歉将其放在代码段中,不确定是否有任何其他方式在此问题中将格式显示为表格。
+-----------+----------+
| EventTime | Value |
+-----------+----------+
| 389.9067 | 0.076014 |
| 670.9632 | 0.190521 |
| 1012.2839 | 0.266599 |
| 1025.2452 | 0.355095 |
| 1347.1064 | 0.45189 |
| 3554.909 | 0.64213 |
| 3932.491 | 0.688693 |
| 4450.6369 | 0.730536 |
| 4819.5832 | 0.746905 |
| 6252.0017 | 0.880531 |
| 6951.3345 | 0.898307 |
| 7607.0877 | 0.945048 |
| 9044.0014 | 1.002455 |
| 9433.6679 | 1.083201 |
+-----------+----------+

我有兴趣获得与第一个值> =给定输入相关联的事件时间,例如如果输入= 0.40,我想报告1347.1064
理想情况下,我想要一个通用的解决方案,我提供一个值阈值列表和数据帧,例如: (.4,.7,.9)并获取具有相应事件时间的列表(或任何其他数据结构)。
环顾四周,没有看到任何明显的解决方案,但可能只是遗漏了一些东西或我对大熊猫的无知,试图学习。
提前致谢
答案 0 :(得分:2)
以下是使用searchsorted
-
df.EventTime[df.Value.searchsorted([.4,.7,.9])]
示例运行 -
In [281]: df
Out[281]:
EventTime Value
0 333.690569 0.097736
1 942.624952 0.136822
2 211.588088 0.246093
3 514.476542 0.483235
4 650.769771 0.643968
5 457.457053 0.687587
6 10.519801 0.730046
7 692.091846 0.833983
8 210.612897 0.922743
9 512.066182 0.964927
In [282]: df.EventTime[df.Value.searchsorted([.4,.7,.9])]
Out[282]:
3 514.476542
6 10.519801
8 210.612897
Name: EventTime, dtype: float64
如果您需要EvenTime
值作为数组,请改用df.EventTime.values
。