Ich bin excercising auf this offenen Datensatz. Die grundlegende Beschreibung der verwendeten Datenrahmen:Pandas/Python-Datenrahmen - Verloren in Merge-Logiken
Da ist eine, die Informationen über die Datenverfügbarkeit enthält: dataavail
Timestamp Availability
201605252300 True
201605252315 False
201605252015 True
Es ist eine, die die eigentlichen Daten enthält weatherdata
SquareID Timestamp Precipitation
25 201605252300 1
Die Sache ist, dass, wenn es ist keine regen, das ist nicht markiert durch weatherdata.Precipitation
wird 0
, aber durch s implizieren fehlt von weatherdata
. Nicht alle fehlenden Daten bedeuten jedoch keine Niederschläge, sie können auch technisches Versagen bedeuten. Das ist, wo dataavail
hereinkommt. Wenn für eine Timestamp
in data
die Availability
False
ist, bedeutet das, dass es ein technisches Problem gab und es keine Daten gibt. Wenn für ein Timestamp
in data
die Availability
True
ist, bedeutet, dass die Fällung war eigentlich 0.
ich diese beiden Datenrahmen verbinden will, so dass ich einen Datenrahmen beschreibt das volle Spektrum der Optionen, nämlich eine, die wie folgt aussieht:
Timestamp Availability Precipitation
201605252300 True 1 #if the availability is True, and there's rain, data can be pulled from weatherdata
201605252315 False NaN #if there's a technical issue, data can stay NaN for further imputation
201605252015 True 0 #if the data's availability is True, but there's no entry fot it in weatherdata, it should be 0
Nun, dies zu erreichen, ich versuche sich als
precip_alldata = pd.merge(weatherdata, dataavail, on=['Timestamp'], how='right')
In meinem Verständnis zu verschmelzen, das die nach documentation sollte
rechts: nur Schlüssel von rechten Rahmen verwenden (SQL: rechte äußere Verknüpfung)
Aber das ist, was ich will, da in dataavail
Verfügbarkeitsdaten für alle möglichen Zeitstempel gibt. Ich verstehe auch, dass dies NaNs noch nicht durch 0 ersetzt, wenn die Verfügbarkeit wahr ist. Die Ausgabe precip_alldata
hat jedoch keine Zeilen, wobei Availability
True
ist, aber Precipitation
ist NaN
, und das führt mich zu der Annahme, dass etwas in meinem Denken aus ist. Betrachtet man den Rohdatensatz, kann ich deutlich Gelegenheiten sehen, wo es keinen Niederschlag gab und der Avaiability
ist True
. Also meine Ausgabe sieht so etwas wie
Timestamp Availability Precipitation
201605252300 True 1
201605252315 False Nan
wo in meinem Verständnis/was ich will, ist
Timestamp Availability Precipitation
201605252300 True 1
201605252315 False NaN
201605252015 True NaN
in diesem ersten Schritt. Könntest du bitte auf den Schuldigen in meinem Denken hinweisen? Vielen Dank!
tut etwas ändern, wenn Sie die Zusammenführung zu tun mit 'on = [ 'Timestamp', 'Niederschlag']'? – Khris
@Khris - dies wird nicht funktionieren, da Niederschlag in beiden Datasets nicht existiert. –