Ich habe einen Datenrahmen mit Spalten von Datetime, lat, lon, z. Ich lese die Daten aus einer CSV-Datei ein, so dass der Zeitraum für die Datumsangaben nicht funktioniert. Die Zeiten sind in 6-Stunden-Intervallen, aber ich möchte die Daten linear in stündliche Intervalle interpolieren.Pandas Interpolieren Datenrahmen mit neuer Länge
Go von
'A' 'B' 'C' 'D'
0 2010-09-13 18:00:00 16.3 -78.5 1
1 2010-09-14 00:00:00 16.6 -79.8 6
2 2010-09-14 06:00:00 17.0 -81.1 12
Um
'A' 'B' 'C' 'D'
1 2010-09-13 18:00:00 16.3 -78.5 1
2 2010-09-13 19:00:00 16.35 -78.7 2
3 2010-09-13 20:00:00 16.4 -78.9 3
4 2010-09-13 21:00:00 16.45 -79.1 4
5 2010-09-13 22:00:00 16.5 -79.3 5
....
Ich habe versucht, den interpolieren Befehl, aber es gibt keine Argumente für eine neue Länge des Datenrahmens.
df.interpolate(method='linear')
Ich dachte, dass ich .loc aufzunehmen 5 Reihen von Nans zwischen jeder Zeile in dem Datenrahmen und dann die Interpolation Funktion nutzen könnte, aber das scheint wie eine schlechte Abhilfe.
Lösung Die Verwendung von DatetimeIndex eliminiert die Zuordnung zu den anderen Spalten, wenn Ihre ursprüngliche Spalte nicht als datetime importiert wurde.
i = pd.DatetimeIndex(start=df['A'].min(), end=df['A'].max(), freq='H')
df = df.reindex(i).interpolate()
print(df)
Gibt die richtige Antwort.
Beispieldaten sind nur Datetime, lat, lon ... wo ist z? – piRSquared