Python Pandas与时间组重叠数据

2024-10-03 21:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图有效地将长期数据分成每天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

我试着跟随:

^{pr2}$

结果是:

                       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
           ...

(注意边缘的重复点)

用熊猫和/或纽比能有效地做到这一点吗?(数据集长达100年)


Tags: 数据间隔时间边缘小时pr2集长
1条回答
网友
1楼 · 发布于 2024-10-03 21:29:48

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

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

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

然后创建一个简单的grouper:

^{pr2}$

检查:

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

相关问题 更多 >