我有一个非常简单的问题:我有一个看起来像的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'
这似乎不是一个非常难的问题,但我无法理解。
答案 0 :(得分:1)
解决方案相对简单,但它隐含地假设在您的数据集中,0
等同于False
(这对我而言似乎合乎逻辑)。如果是这样,这有效:
df.resample('1H', how='sum').fillna(0)
否则,您可能需要采用不同的方式对数据进行排序。
答案 1 :(得分:1)
我是熊猫新手,但这是我的两分钱。
让我们从DataFrame
开头看起来像这样(和你的一样):
我首先做的是将字符串日期时间转换为日期时间字段:
data['datetime'] = pd.to_datetime(data['datetime'])
然后我创建了另一个只有date
值的列:
data['date'] = abc.datetime.dt.date
另一个hour
值:
data['hour'] = data.datetime.dt.hour
所以我的data
DataFrame看起来像这样:
最后,我只按date
和hour
分组:
data.groupby(['date', 'hour']).size()
这些是结果:
如果您不想改变您的DataFrame,只需使用它的副本:
mutable_data = data
然后对mutable_data
进行更改。
我希望这会有所帮助。如果没有,我很乐意收到建议。