Ich habe einen Datenrahmen wie folgt aus:Unterschiedliches Verhalten mit Resampling und asfreq in Pandas
A B value
2014-11-14 12:00:00 30.5 356.3 344
2014-11-15 00:00:00 30.5 356.3 347
2014-11-15 12:00:00 30.5 356.3 356
2014-11-16 00:00:00 30.5 356.3 349
...
2017-01-06 00:00:00 30.5 356.3 347
und ich möchte sicher sein, dass von Anfang an bis zum Ende es keine fehlenden Zeiten sind (dh der Index geht von 12 bis 12 Stunden ohne größere Sprünge). Wenn es ein fehlendes Datum, zum Beispiel ist, wenn ein Wert fehlt, zum Beispiel in 2015.12.12 00.00.00 Ich möchte eine Reihe wie folgt hinzuzufügen:
...
2015-12-12 00:00:00 30.5 356.3 323
2015-12-12 12:00:00 30.5 356.3 NaN *<- add this*
2015-12-13 00:00:00 30.5 356.3 347
Die Frage, wie es zu tun ist, wurde hier by @ ted-petrou gelöst. Die Lösung wurde dabei:
df1= df.asfreq('12H')
df1[['A','B']] = df1[['A','B']].fillna(method='ffill')
Meine Frage: Kann ich es mit resample
statt asfreq
? Doing
df1= df.resample('12H')
df1[['A','B']] = df1[['A','B']].fillna(method='ffill')
ich ValueError: cannot set items on DatetimeIndexResampler
. Ich verstehe nicht warum. Sind nicht die gleichen Operationen resample
und asfreq
für diesen speziellen Fall? Was vermisse ich? Vielen Dank im Voraus.
Danke! Ich wusste nicht, dass ich '' asfreq() 'nach der Resample hinzufügen musste. Ich dachte, dass Resampling genug ist, wie hier: http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.resample.html?highlight=resample#pandas.DataFrame.resample This haben sich in den letzten Versionen geändert. Ich habe Wes McKinneys Buch und er macht es auf die alte Weise (ich denke, dass es bald eine neue Version des Buches geben wird). – David
Yeah, früher (vielleicht <'v0.18')' .resample' hatte ein 'how' arg, das standardmäßig den Mittelwert über Gruppen annahm. Aber jetzt müssen Sie dies unabhängig als eine verkettete Syntax angeben. –