使用groupby()在pandas mad()中出现意外行为

时间:2014-04-28 22:40:34

标签: python pandas

假设我创建了一个数据帧:

In [1]: df = pd.DataFrame({'a':[1,1,1,2,2,2], 'b':[1,2,3,4,5,6]})

如果我对该数据框的分组版本进行大部分统计,则会按预期显示:

In [2]: df.groupby('a').median()
Out[2]: 
   b
a   
1  2
2  5    

但是当我计算中位数绝对偏差(疯狂)时,我得到一个额外的列' a',这是全零:

In [3]: df.groupby('a').mad()
Out[3]: 
   a         b
a             
1  0  0.666667
2  0  0.666667

mad()函数似乎在普通数据帧上正常工作,而不是在分组上。除非这是一个功能,不是一个错误,我只是不理解它。想法?

1 个答案:

答案 0 :(得分:1)

这是一个错误,计划修复为0.14(即将发布),请参阅here。错误是非cythonized例程正在有效地调用apply而不是``agg`。

解决方法是:

df.groupby('a').agg(lambda x: x.mad())