2016-09-21 39 views
0

我有一个给出事件时间(以天为单位)的数据框和一个与每个事件相关的值。在符合条件的熊猫数据框中找到一行的第一个实例

对不起,我把它放在代码片段中,不确定是否有任何其他方式在这个问题中将格式显示为表格。

+-----------+----------+ 
 
| 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),并获取带有相应事件时间的列表(或任何其他数据结构)。

环顾四周,没有看到任何明显的解决方案,但可能只是想念一些东西或者我对熊猫的无知,试图学习。

在此先感谢

回答

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代替。

+0

非常感谢,正是我一直在寻找。 – rbmales

相关问题