从熊猫数据框中为多个日期索引提取值

时间:2020-05-05 05:13:17

标签: python pandas

我有一个时间序列作为pandas数据框,其中有一列名为“ pre”。数据框的索引是pandas date_range。日期范围从1998-01-012002-12-31

我想获取从“ 1998-01-01”到“ 1998-05-31”加上“ 1998-09-01”到“ 1998-12-31”的前置值的总和。在获得1998年的奖励后,我如何才能在所有这些年都获得同样的奖励?

1 个答案:

答案 0 :(得分:2)

将字典理解与f-string一起使用:

np.random.seed(2020)

r = pd.date_range('1998-01-01','2002-12-31')
s = pd.Series(np.random.randint(10, size=len(r)), index=r)
# print (s)

out = {y: s.loc[f"{y}-01-01":f"{y}-05-31"].sum() + s.loc[f"{y}-09-01":f"{y}-12-31"].sum() 
       for y in range(1998, 2003)}
print (out)
{1998: 1235, 1999: 1201, 2000: 1154, 2001: 1270, 2002: 1184}

另一种解决方案是将DatetimeIndex转换为月份并删除6,7,8个月,然后按年份与总计sum进行分组:

s1 = s[~s.index.month.isin([6,7,8])]
print (s1.groupby(s1.index.year).sum())
1998    1235
1999    1201
2000    1154
2001    1270
2002    1184
dtype: int32