通过数据框中的索引和列汇总数据

时间:2019-06-28 07:53:10

标签: python python-3.x aggregate-functions

我有这样的股价数据。日期实际上是数据框的索引。剩下的就是专栏。

undefined

我想要一个新的数据框,该数据框具有每个唯一名称按月的开盘价,最高价,最低价和收盘价的平均值。

我能获得的最好的方法是使用此代码,但不使用“名称”列。

date         open    high    low    close  name
2013-01-01   14.50   14.80   14.25  14.70  AAA
2013-01-02   14.70   14.90   14.30  14.68  AAA
2013-01-01   14.50   14.80   14.25  14.70  BBB
2013-01-02   14.70   14.90   14.30  14.68  BBB
2013-01-01   14.50   14.80   14.25  14.70  CCC
2013-01-02   14.70   14.90   14.30  14.68  CCC

在上述示例中,如何按名称和月份分组?

2 个答案:

答案 0 :(得分:0)

pandas.DataFrame.groupby可以处理多个by

import pandas as pd

df.groupby([df.index.month, 'name']).mean()

输出:

           open   high     low  close
date name                            
1    AAA   14.6  14.85  14.275  14.69
     BBB   14.6  14.85  14.275  14.69
     CCC   14.6  14.85  14.275  14.69

答案 1 :(得分:0)

只需在groupby中添加第二个级别:

stock_group = stock_data.groupby([pd.Grouper(freq='M'), 'name']).agg(stock_agg)