gpt4 book ai didi

python - 重采样时,如果源区间中有一些 NaN 值,则将 NaN 放入结果值中

转载 作者:行者123 更新时间:2023-12-01 08:25:59 25 4
gpt4 key购买 nike

示例:

import pandas as pd
import numpy as np

rng = pd.date_range("2000-01-01", periods=12, freq="T")
ts = pd.Series(np.arange(12), index=rng)
ts["2000-01-01 00:02"] = np.nan
ts
2000-01-01 00:00:00     0.0
2000-01-01 00:01:00 1.0
2000-01-01 00:02:00 NaN
2000-01-01 00:03:00 3.0
2000-01-01 00:04:00 4.0
2000-01-01 00:05:00 5.0
2000-01-01 00:06:00 6.0
2000-01-01 00:07:00 7.0
2000-01-01 00:08:00 8.0
2000-01-01 00:09:00 9.0
2000-01-01 00:10:00 10.0
2000-01-01 00:11:00 11.0
Freq: T, dtype: float64
ts.resample("5min").sum()
2000-01-01 00:00:00     5.0
2000-01-01 00:05:00 30.0
2000-01-01 00:10:00 30.0
Freq: 5T, dtype: float64

在上面的示例中,它提取了 00:00-00:05 区间的总和,就好像缺失值为零一样。我想要的是它在 00:00 产生结果 NaN。

或者,如果区间中有一个缺失值,我可能希望它是 OK,但如果区间中有两个缺失值,则它是 NaN。

我怎样才能做到这些?

最佳答案

对于一个或多个 NaN 值:

ts.resample('5min').agg(pd.Series.sum, skipna=False)

对于最小值 2 个非NaN 值:

ts.resample('5min').agg(pd.Series.sum, min_count=2)

对于 2 个 NaN 值的最大值来说,这似乎很棘手:

ts.resample('5min').apply(lambda x: x.sum() if x.isnull().sum() <= 2 else np.nan)

您可能期望 ts.resample('5min').sum(skipna=False) 的工作方式与 ts.sum(skipna=False) 相同,但实现并不一致。

关于python - 重采样时,如果源区间中有一些 NaN 值,则将 NaN 放入结果值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252106/

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