Python Pandas与TimeGrouper重叠数据

苏贡德

我正在尝试将每天的长期数据有效地分为8个间隔。间隔为每个3小时,但边缘重叠:

00.00 - 03.00
03.00 - 06.00
06.00 - 09.00
09.00 - 12.00
12.00 - 15.00
15.00 - 18.00
18.00 - 21.00
21.00 - 24.00

我试图遵循:

data = data.groupby(pd.TimeGrouper('4h', closed='left'))
for t, group in groups:
    print(group)

结果是:

                       X    Y
2010-01-01 00:00:00 -0.2 -2.4
2010-01-01 01:00:00 -0.1 -2.8
2010-01-01 02:00:00  0.8 -2.3
2010-01-01 03:00:00  1.2 -2.0
                       X    Y
2010-01-01 04:00:00  1.2  0.0
2010-01-01 05:00:00  0.8  0.8
2010-01-01 06:00:00  0.3  1.8
2010-01-01 07:00:00 -0.5  2.8
                       X    Y
2010-01-01 08:00:00 -4.6  3.7
2010-01-01 09:00:00 -7.6  1.3
2010-01-01 10:00:00 -8.0 -1.1
2010-01-01 11:00:00 -7.8 -2.4
                       X    Y
2010-01-01 12:00:00 -5.4 -3.0
2010-01-01 13:00:00 -0.3 -0.9
2010-01-01 14:00:00  1.9 -0.3
2010-01-01 15:00:00  2.3  0.1
           ...

但是我想要的是:

                       X    Y
2010-01-01 00:00:00 -0.2 -2.4
2010-01-01 01:00:00 -0.1 -2.8
2010-01-01 02:00:00  0.8 -2.3
2010-01-01 03:00:00  1.2 -2.0
                       X    Y
2010-01-01 03:00:00  1.2 -2.0
2010-01-01 04:00:00  1.2  0.0
2010-01-01 05:00:00  0.8  0.8
2010-01-01 06:00:00  0.3  1.8
                       X    Y
2010-01-01 06:00:00  0.3  1.8
2010-01-01 07:00:00 -0.5  2.8
2010-01-01 08:00:00 -4.6  3.7
2010-01-01 09:00:00 -7.6  1.3
                       X    Y
2010-01-01 09:00:00 -7.6  1.3
2010-01-01 10:00:00 -8.0 -1.1
2010-01-01 11:00:00 -7.8 -2.4
2010-01-01 12:00:00 -5.4 -3.0
           ...

(请注意边缘处的重复点)

可以使用Pandas和/或Numpy有效地做到这一点吗?(数据集长达100年)

约翰

这有点骇人听闻,但我认为可能必须考虑到您将在设计上有重复的时间戳记(并希望将它们分为不同的组)。请注意,这当然仅适用于规则间隔的行。

首先,只需使用高级/花式索引来复制每三行:

df2 = df.append(df.iloc[3::3]).sort().reset_index()

然后创建一个简单的石斑鱼:

df2['grp'] = df2.index.values / 4

查看:

for i, g in df2.groupby('grp'): print g

         date      time    X    Y  grp
0  2010-01-01  00:00:00 -0.2 -2.4    0
1  2010-01-01  01:00:00 -0.1 -2.8    0
2  2010-01-01  02:00:00  0.8 -2.3    0
3  2010-01-01  03:00:00  1.2 -2.0    0
         date      time    X    Y  grp
4  2010-01-01  03:00:00  1.2 -2.0    1
5  2010-01-01  04:00:00  1.2  0.0    1
6  2010-01-01  05:00:00  0.8  0.8    1
7  2010-01-01  06:00:00  0.3  1.8    1
          date      time    X    Y  grp
8   2010-01-01  06:00:00  0.3  1.8    2
9   2010-01-01  07:00:00 -0.5  2.8    2
10  2010-01-01  08:00:00 -4.6  3.7    2
11  2010-01-01  09:00:00 -7.6  1.3    2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章