Split verschachtelte array-Werte von Pandas Dataframe Zelle über mehrere Zeilen
Ich habe eine Pandas DataFrame der folgenden form
Es ist eine Zeile pro ID pro Jahr (2008 - 2015). Für die Spalten Max Temp
, Min Temp
, und Rain
jede Zelle enthält ein array von Werten an einen Tag in diesem Jahr, D. H. für den Rahmen oben
frame3.iloc[0]['Max Temp'][0]
ist der Wert für den 1. Januar 2011frame3.iloc[0]['Max Temp'][364]
ist der Wert für Dezember 31st 2011.
Ich bin mir bewusst, dies ist schlecht strukturiert, aber dies ist die Daten, die ich zu bewältigen haben. Es ist gespeichert in MongoDB in dieser Art und Weise (wo man diese Zeilen entspricht ein Dokument in Mongo).
Möchte ich teilen diese verschachtelte arrays, so dass statt einer Zeile pro ID pro Jahr, ich habe eine Zeile pro ID und pro Tag. Beim Spalten des Arrays, allerdings würde ich auch gerne eine neue Spalte erstellen, um zu erfassen den Tag des Jahres, basierend auf dem aktuellen array-index. Ich würde dann verwenden Sie diesen Tag, plus die Year
Spalte zum erstellen einer DatetimeIndex
Suchte ich hier nach relevanten Antworten, fand aber nur diese eine die nicht wirklich mir helfen.
- Sind diese inneren arrays als Zeichenfolgen dargestellt oder real-arrays?
- Sie sind Listen der Schwimmer
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie laufen
.apply(pd.Series)
für jede der Spalten, dannstack
und verketten der Ergebnisse.Für eine Reihe
funktioniert es wie folgt
Die Elemente der Serie haben unterschiedliche Länge (es ist wichtig, weil 2012 war ein Schaltjahr). Die intermediate-Serie, also vor
stack
hatte eineNaN
Wert, wurde später fallen gelassen.Nun, lassen Sie uns einen Rahmen:
Dann können wir ausführen:
und erhalten:
Den rest (datetime-index) ist weniger einfach mehr. Zum Beispiel:
days = pd.to_timedelta(result.index.get_level_values(2), unit='D')
funktioniert nicht, ich brauchte die alternative, die Sie zur Verfügung gestelltdays = result.index.get_level_values(2).astype('timedelta64[D]')
to_timedelta
Pause wird behoben werden in den nächsten pandas release.