Python相当于Spark rangeBetween for window?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python相当于Spark rangeBetween for window?相关的知识,希望对你有一定的参考价值。

我试图找到在python中是否有一种方法可以在滚动聚合中执行相当于rangeBetween的操作。在Spark中,您可以使用rangeBetween,使得窗口不必在目标行上对称,即对于每一行,我可以看-5h到+ 3h:所有行发生在之前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 for window?的主要内容,如果未能解决你的问题,请参考以下文章

IEEAC云专委前沿说PySpark和SparkSQL基础:如何利用Python编程执行Spark(附代码)

如何融化 Spark DataFrame?

为啥此 python 代码在 pyspark 中有效,但在 spark-submit 中无效?

Python应用实战案例-pyspark库从安装到实战保姆级讲解

相当于 spark 中日期的数字

Spark学习总结-Spark-Core