2017-10-10 2 views
0

Ich habe Pandas Serie Withe unten gezeigte Struktur:Wie Datenrahmen von Pandas Serie erstellen containg Listen unterschiedlicher Länge

> 0 [{k1:a,k2:b,k3:c},{k1:d,k2:e,k3:f}] 

> 1 [{k1:g,k2:h,k3:i},{k1:j,k2:k,k3:l},{k1:ł,k2:m,k3:n}] 


> 2 [{k1:o,k2:p,k3:r} 

> 3 [{k1:s,k2:t,k3:w},{k1:q,k2:z,k3:w},{k1:x,k2:y,k3:z},{k1:v,k2:f,k3:g}] 

Wie Sie diese Serie sehen elemnts als Listen unterschiedlicher Länge enthält. Elemente in jeder Liste sind Wörterbücher. Ich möchte Datenrahmen schaffen, die sich wie das aussieht:

>  k1 k2 k3 

> 0 a  b  c 

> 1 d  e  f 

> 2 g  h  i 

> 3 j  k  l 

> 4 ł  m  n 

> 5 o  p  r 

> 6 s  t  w 

> 7 q  z  w 

> 8 x  y  z 

> 9 f  v  g 

ich unten Code versucht:

>for index_val, series_val in series.iteritems(): 
>> for dict in series_val: 
>>>  for key,value in dict.items(): 
>>>>   actions['key']=value 

jedoch PyCharm stoppt und produziert nichts. Gibt es eine andere Methode, das zu tun?

+0

Ich denke, die neunte Zeile 'v f g' ein Tippfehler sein kann. – Dark

Antwort

1

Verwenden Concat mit apply pd.DataFrame d.h

x = pd.Series([[{'k1':'a','k2':'b','k3':'c'},{'k1':'d','k2':'e','k3':'f'}], [{'k1':'g','k2':'h','k3':'i'},{'k1':'j','k2':'k','k3':'l'},{'k1':'ł','k2':'m','k3':'n'}], 
     [{'k1':'o','k2':'p','k3':'r'}],[{'k1':'s','k2':'t','k3':'w'},{'k1':'q','k2':'z','k3':'w'},{'k1':'x','k2':'y','k3':'z'},{'k1':'v','k2':'f','k3':'g'}]]) 


df = pd.concat(x.apply(pd.DataFrame,1).tolist(),ignore_index=True) 

Ausgang:

 
    k1 k2 k3 
0 a b c 
1 d e f 
2 g h i 
3 j k l 
4 ł m n 
5 o p r 
6 s t w 
7 q z w 
8 x y z 
9 v f g 

+0

Vielen Dank! Es funktioniert perfekt! – ElaSz

+2

alternative 'df = pd.concat (pd.DataFrame (x) für x in s.values.tolist())' – jezrael

+0

@ElaSz wenn meine Antwort hilfreich war, akzeptieren Sie es. – Dark

Verwandte Themen