Sagen wir, ich habe ein pd.Series von täglich S & P 500 Werte, und ich möchte diese Serie filtern, um die ersten Geschäftstag zu erhalten und den zugehörigen Wert von jede Woche.Erster Wert jeder Woche in pd.Series/Dataframe
So würde zum Beispiel meine gefilterte Serie den 5. September 2017 enthalten (Dienstag - kein Wert für den Montag), dann 11. September 2017 (Montag).
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
Meine Lösung besteht derzeit aus:
mask = SP500.apply(lambda row: SP500[row.name - datetime.timedelta(days=row.name.weekday()):].index[0], axis=1).unique()
filtered = SP500.loc[mask]
Dies ist jedoch suboptimal/nicht-pythonic fühlt. Irgendwelche besseren/schnelleren/saubereren Lösungen?
warum '2017-09-01' nicht – Wen
inbegriffen Vielleicht kannst du einen Pandas-Datenrahmen erstellen und groupby verwenden und das erste Element der Woche nehmen? – Michal
@wen ja 01-09-2017 wäre enthalten ja –