numpy 有没有一种方法可以根据时间间隔将Pandas系列重新塑造成箱,并选择其中之一?

yks3o0rb  于 2023-03-08  发布在  其他
关注(0)|答案(2)|浏览(92)

所以我有一个时间序列存储在Pandas系列:

data = pd.Series(data=[0,1,3,5], index=pd.to_timedelta([0, 15, 30, 45], unit='min'))

我想把这些数据分成30分钟的间隔,然后选择第二个间隔的所有数据。通过查看文档,它可以找到总和、平均值或对值做其他事情,但我找不到一种方法来返回所有数据,因为它们是Pandas系列。
就像这样,但显然这个语法是错误的:

new_data.resample('30min').iloc[1]

如果我有这样的数列:

0 days 00:00:00    0
0 days 00:15:00    1
0 days 00:30:00    3
0 days 00:45:00    5

我想得到:

0 days 00:30:00    3
0 days 00:45:00    5
vltsax25

vltsax251#

可以使用重采样对象的get_group()方法获取第二个间隔对应的数据,下面是一个示例:

import pandas as pd

# Create the original series
data = pd.Series(data=[0,1,3,5], index=pd.to_timedelta([0, 15, 30, 45], unit='min'))

# Resample the series into 30-minute intervals
resampled_data = data.resample('30min')

# Get the data for the second interval
second_interval_data = resampled_data.get_group(resampled_data.groups.keys()[1])

print(second_interval_data)

输出:

0 days 00:30:00    3
0 days 00:45:00    5
Freq: 30T, dtype: int64

get_group()方法返回一个新的DataFrame或Series,其中包含特定组的数据,在本例中,我们使用它来获取重采样数据的第二组(间隔)的数据。

kqlmhetl

kqlmhetl2#

实现此目的的一种更通用的方法(如果您无法保证阵列将在xx:00:xx启动,则可能会很有用)

import numpy as np 
import pandas as pd 

data = pd.Series([1, 2, 3], index=pd.to_timedelta(['0:30:00', '1:15:00', '2:45:00']))

mask = np.floor(data.index.seconds / (30 * 60)) % 2 == 1

print(data[mask])

相关问题