import pandas as pd
date_index = pd.date_range("2010-01-31", "2010-12-31", freq="M")
df = pd.Series(range(12), index=date_index)
dates = date_index[1::2]
该系列df
是每月一次的频率,我们希望通过将dates
变量所给定的日期之间的值相加来重新采样。
df
是:
2010-01-31 0
2010-02-28 1
2010-03-31 2
2010-04-30 3
2010-05-31 4
2010-06-30 5
2010-07-31 6
2010-08-31 7
2010-09-30 8
2010-10-31 9
2010-11-30 10
2010-12-31 11
Freq: M, dtype: int64
dates
是
DatetimeIndex(['2010-02-28', '2010-04-30', '2010-06-30', '2010-08-31',
'2010-10-31', '2010-12-31'],
dtype='datetime64[ns]', freq='2M')
预期结果应为:
2010-02-28 1
2010-04-30 5
2010-06-30 9
2010-08-31 13
2010-10-31 17
2010-12-31 21
想法是将date
s的不匹配值替换为缺失值,Series.where
用bfill
bacj填充缺失值,然后聚合sum
:
date_index = pd.date_range("2010-01-31", "2010-12-31", freq="M")
s = pd.Series(range(12), index=date_index)
dates = date_index[1::2]
a = s.index.to_series().where(s.index.isin(dates)).bfill()
out = s.groupby(a).sum()
print(out)
2010-02-28 1
2010-04-30 5
2010-06-30 9
2010-08-31 13
2010-10-31 17
2010-12-31 21
dtype: int64
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句