gpt4 book ai didi

python - 计算滚动窗口中的不同字符串包括使用 Pandas 的 NaN

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:09 28 4
gpt4 key购买 nike

我想使用最大值为 36 的滚动计数,它需要包括 NaN 值,例如如果它是 NaN,则从 0 开始。我有这样的数据框:

输入:

val
NaN
1
1
NaN
2
1
3
NaN
5

代码:

b = a.rolling(36,min_periods=1).apply(lambda x: len(np.unique(x))).astype(int)

它给了我:

Val     count
NaN 1
1 2
1 2
NaN 3
2 4
1 4
3 5
NaN 6
5 7

预期输出:

Val     count
NaN 0
1 1
1 1
NaN 1
2 2
1 2
3 3
NaN 3
5 4

最佳答案

你可以过滤掉nan

df.val.rolling(36,min_periods=1).apply(lambda x: len(np.unique(x[~np.isnan(x)]))).fillna(0)
Out[35]:
0 0.0
1 1.0
2 1.0
3 1.0
4 2.0
5 2.0
6 3.0
7 3.0
8 4.0
Name: val, dtype: float64

原因

np.unique([np.nan]*2)
Out[38]: array([nan, nan])

np.nan==np.nan
Out[39]: False

关于python - 计算滚动窗口中的不同字符串包括使用 Pandas 的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118268/

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