Python Pandas - 按小时计算布尔变量

时间:2015-12-15 01:30:30

标签: python numpy pandas

我有一个非常简单的问题:我有一个看起来像的pandas DataFrame:

                     y
2015-12-09 09:00:00  1
2015-12-09 08:48:00  1
2015-12-09 08:24:00  1
2015-12-09 08:12:00  1
2015-12-09 08:00:00  1
2015-12-09 06:36:00  1
2015-12-09 06:24:00  1
...                 ..
2015-12-08 10:12:00  1
2015-12-08 10:00:00  1
2015-12-08 09:48:00  1
2015-12-08 09:36:00  1

我想按小时对布尔变量求和,所以我有一些看起来像:

                     y
2015-12-09 09:00:00  1
2015-12-09 08:00:00  4
2015-12-09 07:00:00  0
2015-12-09 06:00:00  2
...                 ..
2015-12-08 10:00:00  2
2015-12-08 09:00:00  2

我一直收到这个错误:

AttributeError: 'numpy.ndarray' object has no attribute 'groupby'

这似乎不是一个非常难的问题,但我无法理解。

2 个答案:

答案 0 :(得分:1)

解决方案相对简单,但它隐含地假设在您的数据集中,0等同于False(这对我而言似乎合乎逻辑)。如果是这样,这有效:

df.resample('1H', how='sum').fillna(0)

否则,您可能需要采用不同的方式对数据进行排序。

答案 1 :(得分:1)

我是熊猫新手,但这是我的两分钱。

让我们从DataFrame开头看起来像这样(和你的一样):

enter image description here

我首先做的是将字符串日期时间转换为日期时间字段:

data['datetime'] = pd.to_datetime(data['datetime'])

然后我创建了另一个只有date值的列:

data['date'] = abc.datetime.dt.date

另一个hour值:

data['hour'] = data.datetime.dt.hour

所以我的data DataFrame看起来像这样:

enter image description here

最后,我只按datehour分组:

data.groupby(['date', 'hour']).size()

这些是结果:

enter image description here

如果您不想改变您的DataFrame,只需使用它的副本:

mutable_data = data

然后对mutable_data进行更改。

我希望这会有所帮助。如果没有,我很乐意收到建议。