我的数据看起来像这样
unit year SURQ
10001 2012 89
10002 2012 83
10003 2012 88
10001 2013 75
10002 2013 69
10003 2013 59
10001 2014 36
10002 2014 59
10003 2014 84
我想按单位找出SURQ的年平均值。例如,2012年单位10001的平均SURQ = ???
我尝试使用数据透视表
avgSURQ = pd.pivot_table(df,index=['year'])
和groupby
avgSURQ = SURQ.groupby('year')
但我认为我的语法错误,所以它不起作用。我是python的新手,所以我可能会误解在线的例子。
答案 0 :(得分:0)
>>> df.reset_index().groupby(['unit','year'])['SURQ'].mean()
unit year
10001 2012 89
2013 75
2014 36
10002 2012 83
2013 69
2014 59
10003 2012 88
2013 59
2014 84
Name: SURQ, dtype: int64
或使用数据透视表:
>>> pd.pivot_table(df.reset_index(),columns=['unit','year'],aggfunc=np.mean)
unit year
SURQ 10001 2012 89
2013 75
2014 36
10002 2012 83
2013 69
2014 59
10003 2012 88
2013 59
2014 84
dtype: int64
答案 1 :(得分:0)
如果您想使用ORDER BY
:
pivot_table()
PS但我认为使用In [169]: x.pivot_table(index=[x.index,'year'], values='SURQ').reset_index()
Out[169]:
unit year SURQ
0 10001 2012 89
1 10001 2013 75
2 10001 2014 36
3 10002 2012 83
4 10002 2013 69
5 10002 2014 59
6 10003 2012 88
7 10003 2013 59
8 10003 2014 84
会更快并且需要更少的内存
数据:
groupby()