gpt4 book ai didi

python - 重采样时,如果源间隔中存在缺失值,则将 NaN 放入结果值中

转载 作者:行者123 更新时间:2023-12-01 01:14:43 24 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").agg(pd.Series.sum, skipna=False)
2000-01-01 00:00:00     NaN
2000-01-01 00:05:00 35.0
2000-01-01 00:10:00 21.0
Freq: 5T, dtype: float64

到目前为止一切顺利。问题是,在最后一个时间间隔 (00:10-00:15),它确实输出了一个值,因为那里没有 NaN。但我不希望这样,因为缺少一些值。

我可以使用 min_count=5,但这并不总是有效(例如,如果我每天汇总到每月,每个目标步骤中的源步骤数量是可变的 - 有些月份有28 天,有的 29 天,有的 30 天,有的 31 天)。

最佳答案

您可以reindex your time series使用一些简单的算术逻辑。

例如,

freq = 5
add = freq - tt.minute % freq
new_ts = ts.reindex(pd.date_range(ts.index[0],
ts.index[-1].to_datetime64() + pd.Timedelta(minutes=add-1),
freq='T'))

输出

2000-01-01 00:00:00     NaN
2000-01-01 00:05:00 35.0
2000-01-01 00:10:00 NaN
Freq: 5T, dtype: float64

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

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