Vielen Dank, @Sirius3 , du hast vermutlich recht.
Allerdings waren unterschiedliche Datentypen für mich nicht ersichtlich.
Ich hatte schon auf typ-Gleichheit in der Spalten in der df geprüft, sind beide 'datetime64[ns]'
Obwohl mich das schon etwas wundert, da ich 'gefühlt' (bin halt noch am Anfang) beide df's gleich befüllt habe:
Code: Alles auswählen
feiertage = ['2022-12-24', '2022-12-25', '2022-12-26', '2022-12-31', '2023-01-01']
pd_feiertage['FEIERTAG'] = pd.to_datetime([x for x in feiertage], format = "%Y-%m-%d")
startdatum = date(2022, 5, 28)
endedatum = date(2023, 12, 31)
pd_datum['Datum'] = pd.to_datetime([date.fromordinal(wert) for wert in range(startdatum.toordinal(), endedatum.toordinal()+1)], format = "%Y-%m-%d")
Sicher hast du recht, dass 0 und 1 daten-technisch nicht so sinnvoll ist, hier war der Treiber, dass am Ende 0 und 1 ausgegeben werden soll, also habe ich es auch einfach so gespeichert.
Am Ende sollen alle benötigten Spalten ausgegeben werden (dienen als Basis für ein großes Insert-Statement).
Eine andere Frage, die mit dem oben vorgeschlagenen Merge zusammenhängt:
Gehe ich recht in der Annahme, dass es in pandas keine window-Funktionen wie in einer Datanbank oder ähnliches gibt, mit der filtern und gruppieren inplace in einer eigenen Spalte umsetzbar ist?
Ich habe mit filtern und anschließendem GroupBy die Basis-Daten für 4 weitere Spalten ermittelt.
Ich vermute, der einzige Weg ist, diese an den 'Master'-df zu mergen und dann die NaN mit Nullen aufzufüllen und alles was nicht 0 ist gegen eine 1 zu tauschen (gibt es dafür eine Funktion? - quasi replace(feld, '<>0', 1 ) - das wäre top

Irgendwie finde ich das mit dem Merge nicht so elegant. Bislang fand ich die meisten python-Lösungen einfach elegant oder elegant einfach - so macht das dann auch mehr Spaß

Dein "datum['ist_feiertag'] = datum.Datum.isin(feiertage.Feiertag)" gefällt mir auch deutlich besser als mein lambda-Gewurstel (wobei ich immer froh bin, wenn's funktioniert...)