假設我有一個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將包括是的 –