簡體   English   中英

相當於窗口的Spark rangeBetween的Python?

[英]Python equivalent to Spark rangeBetween for window?

我正在嘗試查找是否有一種方法可以在python中做與滾動聚合中的rangeBetween等效的方法。 在Spark中,您可以使用rangeBetween,使窗口不必在目標行上對稱,即對於每行,我可以將-5h視為+ 3h:所有行都發生在5h之前和3h之后日期時間列。 我知道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)    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM