使用pandas如何获得组中最后两行的平均值

时间:2012-06-21 13:54:52

标签: python pandas

下面提到的代码似乎有效。 在已排序的组上调用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()

1 个答案:

答案 0 :(得分:2)

文档does mention head/tail

对于您的代码,请使用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