假设我有一个pd.Series 每天 S & P 500的值,我想过滤这个系列以获得第一个营业日和相关的值每周。因此,例如,我的过滤系列将包含2017年9月5日(周二 - 周一没有价值),然后是2017年9月11日(周一)。pd.Series/DataFrame每周的第一个值
Source series:
2017-09-01 2476.55
2017-09-05 2457.85
2017-09-06 2465.54
2017-09-07 2465.10
2017-09-08 2461.43
2017-09-11 2488.11
2017-09-12 2496.48
Filtered series
2017-09-01 2476.55
2017-09-05 2457.85
2017-09-11 2488.11
我的解决方案目前包括:
mask = SP500.apply(lambda row: SP500[row.name - datetime.timedelta(days=row.name.weekday()):].index[0], axis=1).unique()
filtered = SP500.loc[mask]
但是,这感觉不理想/非Python的。任何更好/更快/清洁的解决方案?
为什么'2017-09-01'不包括 – Wen
也许你可以创建一个熊猫数据框架并使用groupby并采用本周的第一个元素? – Michal
@wen是01-09-2017将包括是的 –