首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每段时间的农业测量

每段时间的农业测量
EN

Stack Overflow用户
提问于 2018-12-07 10:07:26
回答 1查看 65关注 0票数 0

我有一个6xn矩阵的数据:年,月,日,小时,分钟,使用。我必须建立一个新的矩阵,其中包含聚合度量,以便在值“小时”中使用。因此,记录在同一小时内的所有行都是合并的。因此,每次代码需要知道一个新时间段的小时数就开始了。我刚试过一些东西,但我现在不知道如何解决这个问题。谢谢。这就是我试过的

代码语言:javascript
复制
def groupby_measurements(data):
    count = -1
    for i in range(9):
        array = np.split(data, np.where(data[i,3] != data[i+1,3])[0][:1]) 
    return array
print(groupby_measurements(np.array([[2006,2,11,1,1,55],
                             [2006,2,11,1,11,79],
                             [2006,2,11,1,32,2],
                             [2006,2,11,1,41,66],
                             [2006,2,11,1,51,76],
                             [2006,2,11,10,2,89],
                             [2006,2,11,10,3,33],
                             [2006,2,11,14,2,22],
                             [2006,2,11,14,5,34]])))

在本例中,我希望输出如下:

代码语言:javascript
复制
                   np.array([[2006,2,11,1,1,55],
                             [2006,2,11,1,11,79],
                             [2006,2,11,1,32,2],
                             [2006,2,11,1,41,66],
                             [2006,2,11,1,51,76]]),  
                   np.array([[2006,2,11,10,2,89],
                             [2006,2,11,10,3,33]]),
                    np.array([[2006,2,11,14,2,22],
                              [2006,2,11,14,5,34]])

最后的产出应是:

代码语言:javascript
复制
                   np.array([2006,2,11,1,0,278]),  
                   np.array([2006,2,11,10,0,122]),
                   np.array([2006,2,11,14,0,56])

(3小时间隔内的使用量之和)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-07 10:42:21

我建议您使用熊猫数据仓库,然后使用groupbysum相结合。

代码语言:javascript
复制
import pandas as pd
import numpy as np

data = pd.DataFrame(np.array(
    [[2006,2,11,1,1,55],
    [2006,2,11,1,11,79],
    [2006,2,11,1,32,2],
    [2006,2,11,1,41,66],
    [2006,2,11,1,51,76],
    [2006,2,11,10,2,89],
    [2006,2,11,10,3,33],
    [2006,2,11,14,2,22],
    [2006,2,11,14,5,34]]),
    columns=['year','month','day','hour','minute','use'])

aggregated = data.groupby(['year','month','day','hour'])['use'].sum()

# you can also use .agg and pass which aggregation function you want as a string.
aggregated = data.groupby(['year','month','day','hour'])['use'].agg('sum')

year  month  day  hour
2006  2      11   1       278
                  10      122
                  14       56

聚合现在是一个熊猫系列,如果你想要它作为一个数组,只需做

代码语言:javascript
复制
aggregated.values
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53667310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档