2016-07-10 20 views
2

Ich habe einen Datenrahmen von US-Umfragedaten, die ich versuche, auf einer täglichen Basis auszupacken. Ich kann nicht herausfinden, wie es geht.Auffüllen eines Multindex Pandas Datenrahmens

Hier sind die Originaldaten (der Datenrahmen muss kein Multiindex sein).

    Democratic   Other Republican 
Date  State             
2008-11-04 AZ  0.451153  0.012495 0.536352 
2012-05-20 AZ  0.462500  0.000000 0.537500 
... 
2008-11-04 WI  0.562178  0.014686 0.423137 
2012-11-03 WI  0.515152  0.000000 0.484848 

I-Pad es will, so sieht es etwa so aus:

    Democratic   Other Republican 
Date  State             
2008-11-04 AZ  0.451153  0.012495 0.536352 
2008-11-05 AZ  0.451153  0.012495 0.536352 
... 
2012-05-20 AZ  0.462500  0.000000 0.537500 
2012-05-21 AZ  0.462500  0.000000 0.537500 
... 
2012-11-06 AZ  0.462500  0.000000 0.537500 
... 
2008-11-04 WI  0.562178  0.014686 0.423137 
2008-11-05 WI  0.562178  0.014686 0.423137 
... 
2012-11-03 WI  0.515152  0.000000 0.484848 
2012-11-04 WI  0.515152  0.000000 0.484848 
2012-11-05 WI  0.515152  0.000000 0.484848 
2012-11-06 WI  0.515152  0.000000 0.484848 

Ich habe versucht, dies zu tun:

election_range = pd.date_range('2008-11-06', '2012-11-06') 
dailies.reindex(election_range, method='pad') 

aber ich bekomme diese Fehlermeldung:

ValueError: cannot include dtype 'M' in a buffer 

Ich habe versucht, nur auf das Datum zu indizieren, aber ich habe eine Fehler, dass der Index nicht eindeutig war.

Die offensichtliche Sache zu tun ist, um den Frame State-by-State zu teilen, neu zu indizieren und kombinieren die Frames, aber es muss eine bessere Möglichkeit, es zu tun. Hat jemand irgendwelche Ideen?

Antwort

0

Versuchen:

start = df.index.levels[0].min() 
end = df.index.levels[0].max() 
days = pd.date_range(start, end) 
df.unstack().reindex(days).ffill().stack().sort_index(level=[1, 0]) 
+0

Dank piRSquared - Ich denke, dieser Ansatz wahrscheinlich ist, zu arbeiten. Der Code, wie du ihn geschrieben hast, funktioniert nicht für mich, aber es ist nah genug. Ich werde das funktionieren lassen und die Antwort hier posten und dann die Frage als gelöst markieren. Ich schätze deine Hilfe - danke. –

+0

Ich hatte einige Bugs an anderer Stelle in meinem Code, die ich reparieren musste, sobald ich sie repariert hatte, funktionierte das großartig. –

Verwandte Themen