Ich habe zu großen .csv-Dateien, die ich mit Python, Pandas und Numpy handle, hier ist ein Beispiel aus dem granulareren Datensatz (A), die Zeitstempel sind in 15-Minuten-Intervallen:Wie man zwei Pandas DataFrames in einer "horizontalen Union" mit python3 verbindet
Timestamp,Real Energy Into the Load
2016-06-01T11:00:00, 2
2016-06-01T10:45:00, 1
2016-06-01T10:30:00, 5
2016-06-01T10:15:00, 3
2016-06-01T10:00:00, 3
2016-06-01T09:45:00, 6
2016-06-01T09:30:00, 2
...
und hier eine Probe aus den weniger körnig Daten (B) mit Zeitstempel, etwa einer Stunde auseinander, aber es gibt eine Menge eine Abweichung zwischen Zeitmarken.
TimeEDT, TemperatureF, Dew PointF
2016-06-01T10:33:00,82.0,66.0
2016-06-01T09:34:00,79.0,64.9
2016-06-01T09:20:00,75.9,64.9
...
Ich mag sie so kombinieren, dass der kombinierte Datenrahmen durch die Gruppierung Mittelwert aus Datenrahmen A die Zeilen die gleiche Anzahl von Zeilen als Datenrahmen B hat. Die letzten entsprechenden Zeilen wären:
TimeEDT, TemperatureF, Dew PointF, Real Energy Into The Load
2016-06-01T10:33:00,82.0,66.0, 1.5 # average of (1, 2)
2016-06-01T09:34:00,79.0,64.9, 4.25 # average of (6, 3, 3, 5)
2016-06-01T09:20:00,75.9,64.9, 2 # average of (2,)
...
Ich denke, das ist eine horizontale Union in SQL.
Dinge, die ich bereits ausprobiert habe: Ich nahm Datensatz B (dfB) und dfB['TimeEDT'].apply
verwendet, um jedes Datum zu "flood" es ist 15 Minuten stündlich. Von dort aus kann ich die groupby
-Funktion verwenden, um die Zeilen zusammenzufassen, um mindestens eine Eins-zu-Eins-Entsprechung zwischen den Zeilen zu haben, aber ich muss die Datenrahmen noch horizontal hinzufügen. Aber ich hätte gerne einen direkteren Weg. Idealerweise könnte das Argument für groupby ein benutzerdefinierter Vergleich sein
Siehe Frage bearbeiten – nteiss
Suche pandas groupby. .mean() – Merlin
Benenne diese beiden Spalten um - es ist immer besser, keine Leerzeichen zu haben. – Merlin