如何从pandas中的groupby函数中获取包含列数的新数据帧?

时间:2016-01-08 21:42:59

标签: python pandas

我根据created_at_hour对数据进行分组并计算总和。这样做我没有问题。但是,我想获得一个只包含这两列的新数据框。我怎么能这样做?

以下是我的数据示例

created_at, user_id
xxx, x

这就是我到目前为止所做的。

data.created_at = pd.to_datetime(data.created_at)
data['created_at_minute'] = data.apply(lambda row: row['created_at'].minute, axis=1)
data['created_at_day'] = data.apply(lambda row: row['created_at'].day, axis=1)
data['created_at_hour'] = data.apply(lambda row: row['created_at'].hour, axis=1)
group_by = data.groupby(['created_at_hour']).agg(['count'])
group_by.plot()

我得到了这样的图表。

enter image description here

一切都很好,但现在我想要一个只有created_at_hour的新数据框和来自count的新groupby列,我该怎么做?这是迄今为止的结果。

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以data.groupby(['created_at_hour']).created_at.agg(['count'])仅对一列进行聚合(在本例中为created_at)。然后,生成的DataFrame将只有一列。它仍将具有MultiIndex列索引,因为您使用了.agg(['count'])(传递单元素列表)。如果您只想进行一次汇总,则可以使用.agg('count').count()