熊猫-累积中位数
问题内容:
我想知道中位数是否有等于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的方法占用大量内存,并且在这种输入大小下会遭受内存崩溃。