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