2017-09-10 16 views
1

私は、この形式の文字列を持っているに辞書のカンマで区切られた文字列を分割する方法:パンダのデータフレーム

{apple:"34253453",oranges:"Sweet",x:"COOL"},{apple:"34222453",oranges:"Dry",x:"WARM"},{apple:"31113453",oranges:"Bitter",x:"HOT"},{apple:"38883453",oranges:"Sweet",x:"COOL"} 

そして「りんご」、「オレンジ」などの列ラベルを持つデータフレームを作成するために探して、 'x'とその値がそれぞれの行に配置されます。

私はこのソリューションを使用しようとしました:Python convert comma separated list to pandas dataframeとast.literal_evalをリストに変換してから、データフレームに変換する前にそれを運にはしません。

答えて

2

あなたの文字列がいくつかは、最初に置き換えるので、必要に応じて、json無効です。

import ast 

s = '{apple:"34253453",oranges:"Sweet",x:"COOL"},{apple:"34222453",oranges:"Dry",x:"WARM"},{apple:"31113453",oranges:"Bitter",x:"HOT"},{apple:"38883453",oranges:"Sweet",x:"COOL"}' 

ss = '[' + s.replace('{', '{"').replace(':"','":"').replace('",', '","') + ']' 
print (ss) 

[{"apple":"34253453","oranges":"Sweet","x":"COOL"}, 
{"apple":"34222453","oranges":"Dry","x":"WARM"}, 
{"apple":"31113453","oranges":"Bitter","x":"HOT"}, 
{"apple":"38883453","oranges":"Sweet","x":"COOL"}] 

df = pd.DataFrame(ast.literal_eval(ss)) 
print (df) 
     apple oranges  x 
0 34253453 Sweet COOL 
1 34222453  Dry WARM 
2 31113453 Bitter HOT 
3 38883453 Sweet COOL 

df = pd.DataFrame(pd.io.json.loads(ss)) 
print (df) 
     apple oranges  x 
0 34253453 Sweet COOL 
1 34222453  Dry WARM 
2 31113453 Bitter HOT 
3 38883453 Sweet COOL