2016-03-25 23 views
2

aşağıdaki biçimde yaklaşık 500000 hatları ile Pandalar DataFrame sahip yeni satır oluşturmak için:Python Pandalar bir dict kolonu, her bir anahtar/değer çifti

**ID Name Key   Value** 
4345 Bill Circle  Blue 
4345 Bill Background Orange 
4345 Bill Type  12 

Ben satıra bir anahtar/değer bölebilirsiniz bir cevap bulduk: Python Pandas: How to split a sorted dictionary in a column of a dataframe ama sefil yukarıda benim gereksinimi gerçekleştirmek için bu genişletmek için başarısız oldu.

Bunu muhtemelen bazı standart döngülerle yönetebilirim, ancak zarif ve verimli bir Panda yaklaşımı olduğunu umuyorum.

cevap

2

this answer dayanarak, benzer bir şey yapabilirsiniz:

>>> df_tags = df.apply(lambda x: pd.Series(x['Tags']),axis=1).stack().reset_index(level=1, drop=False) 
>>> df_tags.columns = ['Key', 'Value'] 
>>> df_tags 
      Key Value 
0  Type  12 
0 background orange 
0  circle blue 
>>> df.drop('Tags', axis=1).join(df_tags) 
    ID Name   Key Value 
0 4345 Bill  Type  12 
0 4345 Bill background orange 
0 4345 Bill  circle blue 
+0

çözüm küçük bir test veri seti ile çok iyi çalıştı, ama benim bilgisayar 0.5M satır masaya çöküşünün girdi. Bunu Postgresql'de yapmaya ve sonuçları Panda'lara aktarmaya geri döndüm. – stephen

İlgili konular