Pandas DataFrame 在满足条件的前几行中查找最接近的索引

我有以下数据帧:df1


    t       A

0   23:00   2

1   23:01   1

2   23:02   2

3   23:03   2

4   23:04   6

5   23:05   5

6   23:06   4

7   23:07   9

8   23:08   7

9   23:09   10

10  23:10   8

对于每个(此处简化了增量,在现实生活中不均匀分布),我想找到(如果有的话)前5分钟内的最新时间。我想得到:ttrA(t)- A(tr) >= 4


    t       A    tr

0   23:00   2

1   23:01   1

2   23:02   2

3   23:03   2

4   23:04   6    23:03

5   23:05   5    23:01

6   23:06   4

7   23:07   9    23:06

8   23:08   7

9   23:09   10   23:06

10  23:10   8    23:06

目前,我可以使用将每行与上一行进行比较,例如.shift(-1)cond = df1['A'] >= df1['A'].shift(-1) + 4


我怎样才能及时看到更远的地方?


阿波罗的战车
浏览 168回答 2
2回答

慕姐4208626

假设你的数据是连续的,那么你可以做通常的移位:df1['t'] = pd.to_timedelta(df1['t'].add(':00'))df = pd.DataFrame({i:df1.A - df1.A.shift(i) >= 4 for i in range(1,5)})df1['t'] - pd.to_timedelta('1min') * df.idxmax(axis=1).where(df.any(1))输出:0         NaT1         NaT2         NaT3         NaT4    23:03:005    23:01:006         NaT7    23:06:008         NaT9    23:06:0010   23:06:00dtype: timedelta64[ns]

跃然一笑

我添加了一个索引并使用 ,它现在包括了简单索引窗口之外的时间窗口功能。datetimerolling()import pandas as pdimport numpy as npimport datetimedf1 = pd.DataFrame({'t' : [        datetime.datetime(2020, 5, 17, 23, 0, 0),        datetime.datetime(2020, 5, 17, 23, 0, 1),        datetime.datetime(2020, 5, 17, 23, 0, 2),        datetime.datetime(2020, 5, 17, 23, 0, 3),        datetime.datetime(2020, 5, 17, 23, 0, 4),        datetime.datetime(2020, 5, 17, 23, 0, 5),        datetime.datetime(2020, 5, 17, 23, 0, 6),        datetime.datetime(2020, 5, 17, 23, 0, 7),        datetime.datetime(2020, 5, 17, 23, 0, 8),        datetime.datetime(2020, 5, 17, 23, 0, 9),        datetime.datetime(2020, 5, 17, 23, 0, 10)        ], 'A' : [2,1,2,2,6,5,4,9,7,10,8]}, columns=['t', 'A'])df1.index = df1['t']df2 = df1cond = df1['A'] >= df1.rolling('5s')['A'].apply(lambda x: x[0] + 4)result = df1[cond]给t                         A2020-05-17 23:00:04       62020-05-17 23:00:05       52020-05-17 23:00:07       92020-05-17 23:00:09      102020-05-17 23:00:10       8
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python