开发者社区> 问答> 正文

在一个数据帧中对多个时间序列进行上采样

在csv中获得了像这样的数据

id,date,price
A,2020-05-04 15:00:00,1.2
B,2020-05-04 15:05:00,1.3
A,2020-05-04 16:07:00,1.4
B,2020-05-04 16:07:00,1.5

因此在同一DataFrame中,A有一个时序,B有一个时序。我创建了数据框,然后将索引设置为df.set_index([“ id”,“ date”])`

现在我想升采样到分钟,以便结果对应于如下所示的csv:

id,date,price
A,2020-05-04 15:00:00,1.2
A,2020-05-04 15:01:00,1.2
...
A,2020-05-04 16:06:00,1.2
A,2020-05-04 16:07:00,1.4
B,2020-05-04 15:05:00,1.3
B,2020-05-04 15:06:00,1.3
...
B,2020-05-04 16:06:00,1.3
B,2020-05-04 16:07:00,1.5

但是没有得到df.resample(“ 60S”,level =“ date”)。pad()发生的事情,当我省略级别并放置级别时,得到的错误是我只能将其用于“ Datetimeindex但它是Multiindex” “不支持从level =或on =选择上采样,使用.set_index将索引显式设置为类似datetime的错误” ...

我觉得必须有一个简单的解决方案...?在一个数据集中有一个系列的多个实例很常见吗?可以肯定的是,我可以拆分数据帧并在之后合并...还有一些使用石斑鱼的帖子,但对我来说听起来太复杂了,听起来好像级别参数一定是解决方案...

问题来源:stackoverflow

展开
收起
is大龙 2020-03-21 12:26:09 448 0
1 条回答
写回答
取消 提交回答
  • 创建DatetimeIndex并使用DataFrame.groupbyDataFrameGroupBy.resample链接:

    df = df.set_index("date").groupby('id').resample("60S").pad()
    print (df)
                           id  price
    id date                         
    A  2020-05-04 15:00:00  A    1.2
       2020-05-04 15:01:00  A    1.2
       2020-05-04 15:02:00  A    1.2
       2020-05-04 15:03:00  A    1.2
       2020-05-04 15:04:00  A    1.2
                       ..    ...
    B  2020-05-04 16:03:00  B    1.3
       2020-05-04 16:04:00  B    1.3
       2020-05-04 16:05:00  B    1.3
       2020-05-04 16:06:00  B    1.3
       2020-05-04 16:07:00  B    1.5
    
    [131 rows x 2 columns]
    

    仅用于处理“价格”列,请使用:

    df1 = df.set_index("date").groupby('id')['price'].resample("60S").pad().reset_index()
    print (df1)
        id                date  price
    0    A 2020-05-04 15:00:00    1.2
    1    A 2020-05-04 15:01:00    1.2
    2    A 2020-05-04 15:02:00    1.2
    3    A 2020-05-04 15:03:00    1.2
    4    A 2020-05-04 15:04:00    1.2
    ..  ..                 ...    ...
    126  B 2020-05-04 16:03:00    1.3
    127  B 2020-05-04 16:04:00    1.3
    128  B 2020-05-04 16:05:00    1.3
    129  B 2020-05-04 16:06:00    1.3
    130  B 2020-05-04 16:07:00    1.5
    
    [131 rows x 3 columns]
    

    回答来源:stackoverflow

    2020-03-21 12:26:43
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
时间序列数据的处理 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载