首页 > 解决方案 > Python - Pandas,每周拆分时间序列数据帧

问题描述

我有一个包含 2 列的数据框,其中填充了时间戳及其相应的值。df 有大约 7000 行(2 个月的数据),我想每周将它们分成更小的数据框。我当然可以将它们分成几天等,但我不知道几周。数据框如下所示:

2018-08-29T00:03:09      12310                  
2018-08-29T00:08:10      21231              
2018-08-29T00:13:10      19.6                   
2018-08-29T00:18:10     19321                   
2018-08-29T00:23:10     182134                  
2018-08-29T00:28:10     172319                  
2018-08-29T00:33:10     1734                    
2018-08-29T00:38:10     1764                    
2018-08-29T00:43:10     169743                  
2018-08-29T00:48:10     16747                   
2018-08-29T00:53:10     17830

谢谢大家,提前!

标签: pythonpandasdataframe

解决方案


你可以这样做:

考虑下面的df:

In [2712]: df                                                                                                                                                                                               
Out[2712]: 
                  Date      Value
0  2018-08-29 00:03:09  12,310.00
1  2018-08-29 00:08:10  21,231.00
2  2018-08-29 00:13:10      19.60
3  2018-08-29 00:18:10  19,321.00
4  2018-08-29 00:23:10 182,134.00
5  2018-08-29 00:28:10 172,319.00
6  2018-08-29 00:33:10   1,734.00
7  2018-08-29 00:38:10   1,764.00
8  2018-08-29 00:43:10 169,743.00
9  2018-08-29 00:48:10  16,747.00
10 2018-08-29 00:53:10  17,830.00

In [2711]: df['Date'] = pd.to_datetime(df['Date'])
In [2714]: df['week'] = df['Date'].dt.week

In [2715]: df                                                                                                                                                                                               
Out[2715]: 
                  Date      Value  week
0  2018-08-29 00:03:09  12,310.00    35
1  2018-08-29 00:08:10  21,231.00    35
2  2018-08-29 00:13:10      19.60    35
3  2018-08-29 00:18:10  19,321.00    35
4  2018-08-29 00:23:10 182,134.00    35
5  2018-08-29 00:28:10 172,319.00    35
6  2018-08-29 00:33:10   1,734.00    35
7  2018-08-29 00:38:10   1,764.00    35
8  2018-08-29 00:43:10 169,743.00    35
9  2018-08-29 00:48:10  16,747.00    35
10 2018-08-29 00:53:10  17,830.00    35

现在将 df 分组week

In [2717]: grp = df.groupby('week') 

In [2721]: for x,y in grp: 
      ...:     print(x,y) 
      ...:                                                                                                                                                                                                  
35                Date      Value  week
0  2018-08-29 00:03:09  12,310.00    35
1  2018-08-29 00:08:10  21,231.00    35
2  2018-08-29 00:13:10      19.60    35
3  2018-08-29 00:18:10  19,321.00    35
4  2018-08-29 00:23:10 182,134.00    35
5  2018-08-29 00:28:10 172,319.00    35
6  2018-08-29 00:33:10   1,734.00    35
7  2018-08-29 00:38:10   1,764.00    35
8  2018-08-29 00:43:10 169,743.00    35
9  2018-08-29 00:48:10  16,747.00    35
10 2018-08-29 00:53:10  17,830.00    35

这将为您提供每周更小的数据框。


推荐阅读