gpt4 book ai didi

python - 计算标准偏差时忽略多个 NaN

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:29 24 4
gpt4 key购买 nike

我有以下 pandas 数据框,其中包含一些 5 分钟的盘中数据。 DeltaBetweenClose 为 NaN,表示市场开盘当天(美国东部时间 9:30)的第一个交易柱。

    time     Date       symbol    DeltaBetweenClose 
9:35 2017-07-17 spy NaN
9:40 2017-07-17 spy -1.2
..........................................
..........................................
16:00 2018-07-17 spy 1.7
9:35 2017-07-18 spy NaN
9:40 2017-07-18 spy 0.3
..........................................
..........................................
9:35 2018-07-17 nflx NaN

我正在尝试创建一个列 CloseDelta_sd 来计算 DeltaBetweenClose 列的滚动标准偏差,该列按 symbol 分组,以查看先前的30 个柱并计算标准偏差,同时忽略 NaN。我的以下尝试返回所有 NaN。当 DeltaBetweenClose 列的顶部只有一个 NaN 时,它会起作用。

df['CloseDelta_sd'] = df.groupby('symbol').DeltaBetweenClose.transform(lambda x: x.rolling(30).std())

最佳答案

问题不在于 std,因为它默认会跳过 NaN,而是 rolling

您需要使用 min_periods参数:

Minimum number of observations in window required to have a value (otherwise result is NA). For a window that is specified by an offset, this will default to 1.

由于您提供的是 int 而不是偏移量,因此您最终会得到很多 NaN 组,解决方法很简单:

(df.groupby('symbol').DeltaBetweenClose
.transform(lambda x: x.rolling(30, min_periods=1).std()))

关于python - 计算标准偏差时忽略多个 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52323681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com