Python 熊猫:按日期和另一个变量的中位数分组

Python 熊猫:按日期和另一个变量的中位数分组,python,pandas,Python,Pandas,这是我的数据帧的一个演示示例。完整数据框架包含多个附加变量,涵盖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-

这是我的数据帧的一个演示示例。完整数据框架包含多个附加变量,涵盖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
列的日期对数据帧进行分组,但同时聚合
情绪
列的中值

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

我想返回一个数据帧,而不是GroupBy对象

日期列是
M8[ns]

情绪栏
float64

我会这样做:

df['date'] = df['date'].apply(lambda x : x.date())
df = df.groupby('date').agg({'sentiment':np.median}).reset_index()
首先用日期替换datetime列。
然后执行groupby+agg操作。

幸运的是,问题中列出了所需的工具

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

我会这样做,因为您可以同时对多个列进行多个聚合(如中位数、平均值、最小值、最大值等):

df.groupby(df.date.dt.date).agg({'sentiment': ['median']})

您可以使用一个GROUPBY and.agg()函数获取任意数量的度量值
1) 创建新列提取日期。
2) 使用groupy by并应用numpy.median、numpy.mean等

import pandas as pd
x = [[1,'2015-05-26 18:58:44'],
     [0.9,'2015-05-26 19:57:31']]
t = pd.DataFrame(x,columns = ['a','b'])
t.b = pd.to_datetime(t['b'])
t['datex'] = t['b'].dt.date


t.groupby(['datex']).agg({
    'a': np.median
})
输出-

datex   
2015-05-26  0.95