我在 python pandas dataframe 对象中有一个时间序列,我想根据索引创建一个组,但我想要重叠的组,即组不不同。 header_sec 是索引列。
每组包含一个 2 秒的窗口。
输入数据帧
header_sec
1 17004 days 22:17:13
2 17004 days 22:17:13
3 17004 days 22:17:13
4 17004 days 22:17:13
5 17004 days 22:17:14
6 17004 days 22:17:14
7 17004 days 22:17:14
8 17004 days 22:17:14
9 17004 days 22:17:15
10 17004 days 22:17:15
11 17004 days 22:17:15
12 17004 days 22:17:15
13 17004 days 22:17:16
14 17004 days 22:17:16
15 17004 days 22:17:16
16 17004 days 22:17:16
17 17004 days 22:17:17
18 17004 days 22:17:17
19 17004 days 22:17:17
20 17004 days 22:17:17
我的第一组应该有
1 17004 days 22:17:13
2 17004 days 22:17:13
3 17004 days 22:17:13
4 17004 days 22:17:13
5 17004 days 22:17:14
6 17004 days 22:17:14
7 17004 days 22:17:14
8 17004 days 22:17:14
第二组从前一个索引开始,取前一秒记录的 1/2。
7 17004 days 22:17:14
8 17004 days 22:17:14
9 17004 days 22:17:15
10 17004 days 22:17:15
11 17004 days 22:17:15
12 17004 days 22:17:15
13 17004 days 22:17:16
14 17004 days 22:17:16
第三组……
13 17004 days 22:17:16
14 17004 days 22:17:16
15 17004 days 22:17:16
16 17004 days 22:17:16
17 17004 days 22:17:17
18 17004 days 22:17:17
19 17004 days 22:17:17
20 17004 days 22:17:17
如果我对索引进行 groupby,
dfgroup=df.groupby(df.index)
这每秒给出一组。合并这些组的最佳方法是什么?
这里有一个技巧:
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)