熊猫是否具有“合同”窗口功能

时间:2018-07-16 20:43:55

标签: python pandas

Pandas是否具有pandas.DataFrame.contracting窗口功能,而该功能与pandas.DataFrame.expanding 无需先进行数据排序相反?与Window.unboundedFollowing相比,这类似于Spark的Window.unboundedPreceding

我认为.rolling会是这样

示例:

import pandas as pd

testdf = pd.DataFrame({'A': [2, 2, 2, 5, 1, 0, 1, 2, 0, 1]})

testdf['A'].expanding(min_periods=1).apply(lambda x: (x > 2).any()).tolist()

# [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

以下使用.rolling产生与上面相同的结果。

testdf['A'].rolling(window=len(testdf), min_periods=1).apply(lambda x: (x > 2).any()).tolist()

# [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

如何更改.rolling使其朝相反的方向工作?
结果应为:

# [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

1 个答案:

答案 0 :(得分:1)

您可以使用

testdf.loc[::-1, 'A'].expanding(min_periods=1).apply(lambda x: (x > 2).any())[::-1]

产生

0    1.0
1    1.0
2    1.0
3    1.0
4    0.0
5    0.0
6    0.0
7    0.0
8    0.0
9    0.0
Name: A, dtype: float64

这将以相反的顺序将扩展窗口应用于“系列”,然后反转该结果,从而使窗口收缩。

不幸的是,我不认为expanding中内置了用于执行此操作的选项。