示例:
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。
或者,如果间隔中有一个缺失值,或者如果间隔中有两个缺失值,我想让它为NaN。
我该怎么办?
答案 0 :(得分:1)
对于一个或多个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)
相同,但是实现方式不一致。