熊猫 - 累积中位数

Bin*_*ven 2 python math accumulate pandas

我想知道是否有相当于有熊猫cumsum()或者cummax()等为中位数:如cummedian()

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

   a
1  5
2  7
3  6
4  4
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的:

df['a'].cummedian()
Run Code Online (Sandbox Code Playgroud)

应该输出:

5
6  
6 
5.5
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 6

你可以使用expanding.median-

df.a.expanding().median()

1    5.0
2    6.0
3    6.0
4    5.5
Name: a, dtype: float64
Run Code Online (Sandbox Code Playgroud)

时间安排

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
Run Code Online (Sandbox Code Playgroud)

赢家是expanding.median一个巨大的优势。Divakar 的方法是内存密集型的,并且在这种输入大小下会出现内存爆裂。