gpt4 book ai didi

python - 创建带有编号时间窗口的新数据框列

转载 作者:行者123 更新时间:2023-12-04 02:25:55 26 4
gpt4 key购买 nike

当我试图在数据框中创建一个新的 pandas 列来表示编号的时间窗口时,我真的很难过。我不是要进行分组/聚合。

考虑我有以下 df:

TIME
0 2018-01-02 06:00:00
1 2018-01-02 06:01:56
2 2018-01-02 06:05:55
3 2018-01-02 06:06:08
4 2018-01-02 06:06:22
5 2018-01-02 06:07:16
6 2018-01-02 06:07:57
7 2018-01-02 06:08:42
8 2018-01-02 06:10:44
9 2018-01-02 06:10:24
10 2018-01-02 06:10:46

我需要在 5 分钟的时间内获取以下内容:

TIME                     WINDOW_NUMBER
0 2018-01-02 06:00:00 1
1 2018-01-02 06:01:56 1
2 2018-01-02 06:05:55 2
3 2018-01-02 06:06:08 2
4 2018-01-02 06:06:22 2
5 2018-01-02 06:07:16 2
6 2018-01-02 06:07:57 2
7 2018-01-02 06:08:42 2
8 2018-01-02 06:10:44 3
9 2018-01-02 06:10:24 3
10 2018-01-02 06:10:46 3

我需要在几分钟内调整窗口参数。

非常感谢任何帮助。

最佳答案

您可以使用timedelta 来指定时间间隔。并从时间列中减去这个时间差。

我使用 start = df['TIME'][0] 指定引用开始时间 2018-01-02 06:00:00 这是列中的第一个值。

import pandas as pd
from datetime import timedelta

df = pd.DataFrame({'TIME': [
'2018-01-02 06:00:00',
'2018-01-02 06:01:56',
'2018-01-02 06:05:55',
'2018-01-02 06:06:08',
'2018-01-02 06:06:22',
'2018-01-02 06:27:16',
'2018-01-02 06:27:57',
'2018-01-02 06:38:42',
'2018-01-02 06:40:44',
'2018-01-02 06:40:24',
'2018-01-02 06:58:46'
]})
df['TIME'] = pd.to_datetime(df['TIME'])

diff = timedelta(minutes=5)
start = df['TIME'][0]
df['W'] = (df['TIME'] - start) // diff +1

#to meet your requirement of incremental window by 1
df['WINDOW_NUMBER'] = 1
for i in range(1, df.shape[0]):
if df.loc[i, 'W'] != df.loc[i-1, 'W']:
df.loc[i, 'WINDOW_NUMBER'] = df.loc[i-1, 'WINDOW_NUMBER'] + 1
else:
df.loc[i, 'WINDOW_NUMBER'] = df.loc[i-1, 'WINDOW_NUMBER']

输出

    TIME                W   WINDOW_NUMBER
0 2018-01-02 06:00:00 1 1
1 2018-01-02 06:01:56 1 1
2 2018-01-02 06:05:55 2 2
3 2018-01-02 06:06:08 2 2
4 2018-01-02 06:06:22 2 2
5 2018-01-02 06:27:16 6 3
6 2018-01-02 06:27:57 6 3
7 2018-01-02 06:38:42 8 4
8 2018-01-02 06:40:44 9 5
9 2018-01-02 06:40:24 9 5
10 2018-01-02 06:58:46 12 6

关于python - 创建带有编号时间窗口的新数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67722877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com