Ich habe tägliche Daten und eine Schleife, die jeden dritten Freitag in einem Monat definiert und ändert dann den Wert einer Spalte auf 2 für die 20 Tage von und zu diesem dritten Freitag. Die Markierung funktioniert jedoch nur für die Tage NACH dem dritten Freitag davor. Ich verstehe nicht warum. My Datenrahmen „verschmolzen“ ist folgende:Pandas: Subtraktion Timedelta in Schleife
Date ID Window
01/01/2000 1 0
01/01/2000 1 0
02/01/2000 2 0
02/01/2000 2 0
Der Code so weit ist die folgende:
#Get third friday in a month Friday:
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
year = 2000; month = 3
monthcal = c.monthdatescalendar(year,month)
third_friday = [day for week in monthcal for day in week if \
day.weekday() == calendar.FRIDAY and \
day.month == month][2]
#Loop through dates to change the window column:
for beg in pd.date_range("2000-01-01", "2017-05-01"):
beg= third_friday
merged["window"].loc[beg: beg + pd.to_timedelta(20,"D")] = 2
merged["window"].loc[beg: beg - pd.to_timedelta(20,"D")] = 2
#repeat the same for the next Fridays:
if month==12:
year=year+1
month=0
if year>=2017 and month>=3:
break
month = month +3
monthcal = c.monthdatescalendar(year,month)
third_friday = [day for week in monthcal for day in week if \
day.weekday() == calendar.FRIDAY and \
day.month == month][2]
Wenn ich diesen Code ausführen, ich habe nicht die Fenster Spalte 2 vor dem dritten bekommen Freitag. Nur die Tage 20 Tage nach dem dritten Freitag werden auf 2 geändert. Weiß jemand, was mache ich falsch?
Sie wissen, dass diese 20 Tage vor und nach Perioden überlappen –
Aber anscheinend tun Sie nur das alle 3 Monate, nicht jeden Monat, so ignorieren, was ich oben sagte –