2014-08-28 12 views
9

Wie konvertiere ich diesen DatenrahmenVon Tupeln auf mehrere Spalten in Pandas

 
              location value      
0     (Richmond, Virginia, nan, USA) 100      
1    (New York City, New York, nan, USA) 200      

dazu:

 
    city   state  region country value 
0 Richmond  Virginia nan  USA  100 
1 New York City New York nan  USA  200 

Beachten Sie, dass die location Spalte in der ersten Datenrahmen Tupel enthält. Ich möchte vier Spalten aus der Spalte location erstellen.

Antwort

8
new_col_list = ['city','state','regions','country'] 
for n,col in enumerate(new_col_list): 
    df[col] = df['location'].apply(lambda location: location[n]) 

df = df.drop('location',axis=1) 
4

Wenn Sie eine Reihe von (split) Standort zurückkehren, können Sie (join-merge on index) die resultierende DF direkt mit dem Wert Spalte fusionieren.

addr = ['city', 'state', 'region', 'country'] 
df[['value']].join(df.location.apply(lambda loc: Series(loc, index=addr))) 

    value   city  state region country 
0 100  Richmond Virginia  NaN  USA 
1 200 New York City New York  NaN  USA 
+0

Danke. @ exp1orers Lösung hat funktioniert, also musste ich deine nicht ausprobieren. –

+0

Das ist schön gemacht! Wenn ich mich nicht irre, funktioniert es nur, wenn 'df' einen Index hat, der' Bereich (len (df)) 'ist, richtig? – exp1orer

+0

@ exp1orer Nicht ganz. 'Join' ist eine Abkürzung für das Zusammenführen eines Index mit beiden Frames, so dass die Indizes nur konsistent sein müssen (was hier der Fall ist, da die Apply- und die Col-Auswahl dies nicht beeinflussen). Ich werde die Antwort bearbeiten. – meloncholy

Verwandte Themen