假设我创建了一个数据帧:
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()函数似乎在普通数据帧上正常工作,而不是在分组上。除非这是一个功能,不是一个错误,我只是不理解它。想法?
答案 0 :(得分:1)
这是一个错误,计划修复为0.14(即将发布),请参阅here。错误是非cythonized例程正在有效地调用apply
而不是``agg`。
解决方法是:
df.groupby('a').agg(lambda x: x.mad())