我有这样的股价数据。日期实际上是数据框的索引。剩下的就是专栏。
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
在上述示例中,如何按名称和月份分组?
答案 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)