2017-05-12 1 views
1

Ich versuche, eine Liste von Listen zu erhalten, die wie folgt aussieht (lassen Sie uns diese nennen ‚All‘):Machen Sie eine Liste von Listen aufgeteilt, eine Liste und dann in Datenrahmen umwandeln

[['Albany County, Wyoming', '56', '001'], 
['Big Horn County, Wyoming', '56', '003'], 
['Campbell County, Wyoming', '56', '005'],... 

und konvertieren in einen Datenrahmen, die wie folgt aussehen:

COUNTY   STATE  FIPS1 FIPS2 
'Albany County' 'Wyoming' '56' '001' 
'Big Horn County' 'Wyoming' '56' '003' 
'Campbell County' 'Wyoming' '56' '005' 

Dies ist es, was ich bisher für die Liste der Listen:

for index, line in enumerate(All): 
    All[index] = line[0].split(','), line[1:] 

pd.DataFrame(All) 

Aber das ist Rückkehr ing:

      0   1 
0  [Albany County, Wyoming] [56, 001] 
1  [Big Horn County, Wyoming] [56, 003] 
2  [Campbell County, Wyoming] [56, 005] 

Vielen Dank im Voraus für Ihre Hilfe!

Antwort

2
All = [ 
    ['Albany County, Wyoming', '56', '001'], 
    ['Big Horn County, Wyoming', '56', '003'], 
    ['Campbell County, Wyoming', '56', '005'] 
] 

pd.DataFrame(
    [line[0].split(', ') + line[1:] for line in All], 
    columns=['COUNTY', 'STATE', 'FIPS1', 'FIPS2'] 
) 

      COUNTY STATE FIPS1 FIPS2 
0 Albany County Wyoming 56 001 
1 Big Horn County Wyoming 56 003 
2 Campbell County Wyoming 56 005 

Oder

df = pd.DataFrame(All, columns=['COUNTY, STATE', 'FIPS1', 'FIPS2']) 

col = 'COUNTY, STATE' 
df[col].str.extract(
    '(?P<COUNTY>.*), (?P<STATE>.*)', expand=True 
).join(df.drop(col, 1)) 

      COUNTY STATE FIPS1 FIPS2 
0 Albany County Wyoming 56 001 
1 Big Horn County Wyoming 56 003 
2 Campbell County Wyoming 56 005 
+0

Sorry, ich verließ die letzte Zeile des Codes aus. Ich habe es gerade bearbeitet (pd.DataFrame (All)). – jtam

+0

@ user2970409 ändern 'line [0] .split (','), Linie [1:]' zu 'Linie [0] .split (',') + Linie [1:]' – piRSquared

+0

Das erste funktioniert! Ich schätze die Hilfe sehr. – jtam

0

Sie können auch versuchen, diese:

lst = [['Albany County, Wyoming', '56', '001'], 
['Big Horn County, Wyoming', '56', '003'], 
['Campbell County, Wyoming', '56', '005']] 

df = pd.DataFrame(lst) 
df.columns = ['COUNTY_STATE', 'FIPS1', 'FIPS2'] 
print(df) 
       COUNTY_STATE FIPS1 FIPS2 
0 Albany County, Wyoming 56 001 
1 Big Horn County, Wyoming 56 003 
2 Campbell County, Wyoming 56 005 

ALL = pd.DataFrame(df['COUNTY_STATE'].str.split(',').tolist(), columns = ['COUNTY','STATE']) 
ALL[['FIPS1', 'FIPS2']] = df[['FIPS1', 'FIPS2']] 
print(ALL) 
      COUNTY  STATE FIPS1 FIPS2 
0 Albany County Wyoming 56 001 
1 Big Horn County Wyoming 56 003 
2 Campbell County Wyoming 56 005 
+0

Danke! Es ist immer schön, eine andere Lösung zu sehen. – jtam

Verwandte Themen