Python 相当于窗口的 Spark rangeBetween?

标签 python apache-spark pyspark

我试图找出 python 中是否有一种方法可以在滚动聚合中执行与 rangeBetween 等效的操作。在 Spark 中,您可以使用 rangeBetween,这样窗口就不必在目标行上对称,即对于每一行,我可以查看 -5h 到 +3h:所有发生在 absed 之前 5 小时和之后 3 小时之间的行日期时间列。我知道 python 有 pd.rolling 选项,但在阅读了我能找到的所有文档后,它看起来只需要 1 个输入作为窗口。您可以更改该窗口是否以每一行为中心,但我找不到明确设置它的方法,以便它可以查看我选择的范围。

有人知道我不知道的其他功能或功能可以做到这一点吗?

最佳答案

我不确定这是否是最佳答案,但它是我的并且有效,所以我想在有更好的选择之前它必须这样做。我用它制作了一个 python 函数,这样您就可以在任何您想要的聚合函数中使用。

def rolling_stat(pdf, lower_bound, upper_bound, group , statistic = 'mean' )
    import pandas as pd
    import numpy as np
    import random
    from datetime import datetime, timedelta

    group = pdf[group].drop_duplicates()
    for grp in group:
        dataframe_grp = dataframe[dataframe['group']==grp]
        dataframe_grp.sort_index()
        for index, row in dataframe_grp.iterrows(): 
            lower= (index - timedelta(minutes = lower_bound))
            upper=  (index + timedelta(minutes = upper_bound))    
            agg = dataframe_grp.loc[lower:upper]['nbr'].agg([statistic])
            dataframe_grp.at[index, 'agg'] = agg[0]     
            data_agg = data_agg.append(dataframe_grp)    

关于Python 相当于窗口的 Spark rangeBetween?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53118045/

相关文章:

scala - 阅读比 CPU 核心数更多的 Kafka 主题

apache-spark - 计算 pyspark 中窗口上列的百分位数

python - 在剧本中使用authorized_key模块为新用户设置SSH key

scala - Spark 仅获取具有一个或多个空值的列

apache-spark - Pyspark 作业陷入最终任务

python - PySpark Dataframe 将列融为行

java - PySpark 中不存在方法 showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean])

python - 为什么要继承对象类型

python - 在 OSX 10.6 上导入 Python Sybase 模块时出现 undefined symbol

python - Spark2-submit 对 python 字典进行意外的自动排序