Groupby With Overlapping Intervals Timeseries
I have a time series in python pandas dataframe object and I want to create a group based on index but I want overlapping groups i.e groups are not distinct. The header_sec is the
Solution 1:
Here is a technique:
import numpy as np # if you have not already done this
grouped = df.groupby(df.index)
for name, group in grouped:
try:
prev_sec = df.loc[(name - pd.to_timedelta(1, unit='s')), :]
except KeyError:
prev_sec = pd.DataFrame(columns=group.columns)
try:
next_sec = df.loc[(name + pd.to_timedelta(1, unit='s')), :]
except KeyError:
next_sec = pd.DataFrame(columns=group.columns)
Pn = 2 # replace this with int(len(prev_sec)/2) to get half rows from previous second
Nn = 2 # replace this with int(len(next_sec)/2) to get half rows from next second
group = pd.concat([prev_sec.iloc[-Pn:,:], group, next_sec.iloc[:Nn,:]])
# Replace the below lines with your operations
print(name, group)
Post a Comment for "Groupby With Overlapping Intervals Timeseries"