gpt4 book ai didi

python - 如何将连续的值分组在定期时间间隔的序列中?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:29 25 4
gpt4 key购买 nike

我需要单独分析规则间隔时间序列中包含的空洞之间的记录。

例如,在以下每隔 6 秒有规律间隔的时间序列中,00:24 和 00:54 之间有一个间隔:

2018-01-01 00:00:00     4.2
2018-01-01 00:00:06 4.1
2018-01-01 00:00:12 4.3
2018-01-01 00:00:18 3.4
2018-01-01 00:00:24 4.7
2018-01-01 00:00:54 3.3
2018-01-01 00:01:00 8.2

我需要分别分析以下两组:

第一组:

2018-01-01 00:00:00     4.2
2018-01-01 00:00:06 4.1
2018-01-01 00:00:12 4.3
2018-01-01 00:00:18 3.4
2018-01-01 00:00:24 4.7

第二组:

2018-01-01 00:00:54     3.3
2018-01-01 00:01:00 8.2

庞大的数据集包含多个空洞,分析需要比较连续的组。

下面是一些重现示例的代码:

data_index = pd.DatetimeIndex(['2018-01-01 00:00:00', '2018-01-01 00:00:
06','2018-01-01 00:00:12','2018-01-01 00:00:18', '2018-01-01 00:00:24', '2018-01-01 00:00:54', '2018-01-01 00:01:00'])
data = [4.2, 4.1,4.3,3.4, 4.7, 3.3, 8.2]
df = pd.DataFrame(data_index, columns=['date'])
df['datetime'] = pd.to_datetime(df['date'])
df = df.set_index('datetime')
df.drop(['date'], axis=1, inplace=True)
df['data'] = data

最佳答案

使用 DataFrame.groupby 创建单独的数据框

groups=( df.index.to_series().diff()>=pd.Timedelta(seconds=6) ).cumsum()+1
for i , group in df.groupby(groups):
print(group)

data
datetime
2018-01-01 00:00:00 4.2
2018-01-01 00:00:06 4.1
2018-01-01 00:00:18 3.4
2018-01-01 00:00:24 4.7
data
datetime
2018-01-01 00:00:54 3.3
2018-01-01 00:01:00 8.2

详情

print(groups)

datetime
2018-01-01 00:00:00 1
2018-01-01 00:00:06 1
2018-01-01 00:00:18 1
2018-01-01 00:00:24 1
2018-01-01 00:00:54 2
2018-01-01 00:01:00 2
Name: datetime, dtype: int64

要分析不同的数据帧,您可以将它们保存在字典中:

dfs={i:group for i,group in df.groupby(groups)}
print(dfs[1])
data
datetime
2018-01-01 00:00:00 4.2
2018-01-01 00:00:06 4.1
2018-01-01 00:00:18 3.4
2018-01-01 00:00:24 4.7

print(dfs[2])
data
datetime
2018-01-01 00:00:54 3.3
2018-01-01 00:01:00 8.2

关于python - 如何将连续的值分组在定期时间间隔的序列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58778822/

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