熊猫-累积中位数


问题内容

我想知道中位数是否有等于cumsum()cummax()等等的大熊猫:例如cummedian()

这样,如果我有这个数据框,例如:

   a
1  5
2  7
3  6
4  4

我想要的是这样的:

df['a'].cummedian()

应该输出:

5
6  
6 
5.5

问题答案:

您可以使用expanding.median-

df.a.expanding().median()

1    5.0
2    6.0
3    6.0
4    5.5
Name: a, dtype: float64

时机

df = pd.DataFrame({'a' : np.arange(1000000)})

%timeit df['a'].apply(cummedian())
1 loop, best of 3: 1.69 s per loop

%timeit df.a.expanding().median()
1 loop, best of 3: 838 ms per loop

获胜者expanding.median可观。Divakar的方法占用大量内存,并且在这种输入大小下会遭受内存崩溃。