在pandas数据框中找到符合条件

时间:2016-09-21 19:45:50

标签: python pandas

我有一个数据框给出事件时间(以天为单位)以及与每个事件相关的值。

很抱歉将其放在代码段中,不确定是否有任何其他方式在此问题中将格式显示为表格。



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

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

提前致谢

1 个答案:

答案 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