有没有Pandas滚动的方法,应用以在函数中输入 Dataframe

vvppvyoh  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(116)

我有代码如下:

def fn(x):
    ...
df.rolling(length).apply(lambda x: fn(x))

我想让这个函数把 Dataframe 的一个子集作为输入,这可能吗?

soat7uwm

soat7uwm1#

实际上我找到了一种方法,虽然它没有真正将df的一部分作为参数传递,但可以从那里获得df。

def fn(x):
    df_frac = df.iloc[x.index.start: x.index.stop]
    return ...

df.rolling(length).apply(lambda x: fn(x))
jogvjijk

jogvjijk2#

一种方法可以是:

df = pd.DataFrame({'a': np.random.randint(5, 15, 5), 
                   'b': np.random.randint(5, 15, 5), 
                   'c': np.random.randint(5, 15, 5)})

def fn(x):
    return x.sum()

r = df.rolling(3)

[fn(x) for x in r]

输出:

[a    10
 b    13
 c    14
 dtype: int64,
 a    19
 b    27
 c    19
 dtype: int64,
 a    33
 b    38
 c    24
 dtype: int64,
 a    29
 b    37
 c    16
 dtype: int64,
 a    32
 b    30
 c    23
 dtype: int64]

相关问题