2016-01-08 61 views
2

这是我的DataFrame的演示示例。完整的DataFrame有多个附加变量,涵盖6个月的数据。熊猫:按日期分组和其他变量的中位数

sentiment  date 
1    2015-05-26 18:58:44 
0.9   2015-05-26 19:57:31 
0.7   2015-05-26 18:58:24 
0.4   2015-05-27 19:17:34 
0.6   2015-05-27 18:46:12 
0.5   2015-05-27 13:32:24 
1    2015-05-28 19:27:31 
0.7   2015-05-28 18:58:44 
0.2   2015-05-28 19:47:34 

我想组数据帧由date列的只是一天,但sentiment列在同一时间聚集的中位数。

我用groupby试过的一切,dt访问器和timegrouper都失败了。

我想返回一个pandas DataFrame而不是GroupBy对象。

日期列M8[ns]

的情绪列float64

回答

6

幸运的是,您需要在您的问题中列出所需的工具。

In [61]: df.groupby(df.date.dt.date)[['sentiment']].median() 
Out[61]: 
      sentiment 
2015-05-26  0.9 
2015-05-27  0.5 
2015-05-28  0.7 
0

我这样做:

df['date'] = df['date'].apply(lambda x : x.date()) 
df = df.groupby('date').agg({'sentiment':np.median}).reset_index() 

您先用最新更换datetime列。 然后你执行groupby + agg操作。