【发布时间】:2019-03-04 21:33:59
【问题描述】:
我想获取一个包含 MultiIndex 列(其中索引是 DatetimeIndex)的数据框,并根据列通过不同的函数进行聚合。
例如,考虑下表,其中索引包括日期,第一级列是价格和交易量,第二级列是代码(例如 AAPL 和 AMZN)。
df1 = pd.DataFrame({"ticker":["AAPL"]*365,
'date': pd.date_range(start='20170101', end='20171231'),
'volume' : [np.random.randint(50,100) for i in range(365)],
'price': [np.random.randint(100,200) for i in range(365)]})
df2 = pd.DataFrame({"ticker":["AMZN"]*365,
'date': pd.date_range(start='20170101', end='20171231'),
'volume' : [np.random.randint(50,100) for i in range(365)],
'price': [np.random.randint(100,200) for i in range(365)]})
df = pd.concat([df1,df2])
grp = df.groupby(['date', 'ticker']).mean().unstack()
grp.head()
我想做的是按月汇总数据,但取价格的平均值和数量的总和。
我原以为grp.resample("MS").agg({"price":"mean", "volume":"sum"}) 中的一些东西应该可以工作,但它不是因为多索引列。完成此任务的最佳方法是什么?
【问题讨论】:
标签: pandas pandas-groupby