在pandas数据帧中查找向后看的值的第一个实例

时间:2017-11-28 12:46:28

标签: python pandas

我有一个如下数据框:

Timestamp   Value
11/23/2017  7
11/24/2017  3
11/25/2017  5
11/26/2017  7
11/27/2017  7
11/28/2017  7

我想写一些东西,它返回最后一个值的第一个实例,7,向上看,并在值变为其他值时停止。因此,示例数据框的答案应为11/26/2017

我尝试drop_duplicates但是返回时间戳为11/23/2017的第一行。

感谢。

1 个答案:

答案 0 :(得分:2)

In [173]: df.iat[df.loc[::-1, 'Value'].diff().fillna(0).ne(0).idxmax()+1,
                 df.columns.get_loc('Timestamp')]
Out[173]: '11/26/2017'

计时 600.000行DF:

In [201]: df = pd.concat([df] * 10**5, ignore_index=True)

In [202]: %%timeit
     ...: df['Value'].ne(df['Value'].shift()).cumsum().idxmax()
     ...:
15.3 ms ± 646 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [203]: %%timeit
     ...: df.iat[df.loc[::-1, 'Value'].diff().fillna(0).ne(0).idxmax()+1,
     ...:        df.columns.get_loc('Timestamp')]
     ...:
11.6 ms ± 237 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)