下面提到的代码似乎有效。
在已排序的组上调用tail
函数可以为我提供组的最后n行。
这是组尾部函数的记录行为.pandas文档没有提到它,我担心在下一个版本中这种行为可能会改变。
还有一些其他方法来执行以下操作。对于大型数据集,使用apply
函数似乎非常慢。
0.7.3中使用的pandas版本
df1=pds.DataFrame({'A' : ['CU','CU','CU','CU','CU','AU','AU','AU','AU','AU'],'B':[1,2,3,4,5,1,2,3,4,5]}).sort(['A']).reset_index().drop(['index'],axis=1)
df2=df1.groupby(['A'])
df3=df2.tail(2).groupby(['A'])
df3.mean()
答案 0 :(得分:2)
对于您的代码,请使用pivot_table
:
a = pds.DataFrame({'A' : ['CU','CU','CU','CU','CU','AU','AU','AU','AU','AU'],
'B':[1,2,3,4,5,1,2,3,4,5]}).sort(['A'])
a.pivot_table(rows='A', values='B', aggfunc=lambda x: x.tail(2).mean())
返回
AU 4.5
CU 4.5