2017-08-24 9 views
0

を私は結果のデータフレームは、各キーは独自の列も持ちたいデータフレーム- パンダ

0  {'neg': 0.0, 'neu': 0.462, 'pos': 0.538} 
1  {'neg': 0.0, 'neu': 0.609, 'pos': 0.391} 
2  {'neg': 0.043, 'neu': 0.772, 'pos': 0.185} 
3  {'neg': 0.035, 'neu': 0.765, 'pos': 0.2} 
4  {'neg': 0.0, 'neu': 0.655, 'pos': 0.345} 
5  {'neg': 0.0, 'neu': 0.631, 'pos': 0.369} 

への辞書のシリーズを変換しようとしています。

neg neu  pos 
0.0. 0.462 0.538 
0.0 0.609 0.391 
.. ..  .. 

パンダでどうすればいいですか?

答えて

3

ser

ser 
Out: 
0  {'neg': 0.0, 'neu': 0.462, 'pos': 0.538} 
1  {'neg': 0.0, 'neu': 0.609, 'pos': 0.391} 
2 {'neg': 0.043, 'neu': 0.772, 'pos': 0.185} 
3  {'neg': 0.035, 'neu': 0.765, 'pos': 0.2} 
4  {'neg': 0.0, 'neu': 0.655, 'pos': 0.345} 
5  {'neg': 0.0, 'neu': 0.631, 'pos': 0.369} 

を改革するためにthis postを見てください。 applyはフレキシブルで、各行はSeriesであるためDataFrameを返します。

ser.apply(pd.Series) 
Out: 
    neg neu pos 
0 0.000 0.462 0.538 
1 0.000 0.609 0.391 
2 0.043 0.772 0.185 
3 0.035 0.765 0.200 
4 0.000 0.655 0.345 
5 0.000 0.631 0.369 

それともリストにシリーズを変換し、データフレームのコンストラクタを呼び出すことができます。

pd.DataFrame(ser.tolist()) 
Out: 
    neg neu pos 
0 0.000 0.462 0.538 
1 0.000 0.609 0.391 
2 0.043 0.772 0.185 
3 0.035 0.765 0.200 
4 0.000 0.655 0.345 
5 0.000 0.631 0.369 
0

おそらくこれを行うには良い方法がありますが、これはあなたが持っている構造化データでは非常に簡単です。

そうでなければあなたは各行にpd.Seriesコンストラクタをapplyでき辞書をあなたのシリーズを考えると

import pandas as pd 

a = [{'neg': 0.0, 'neu': 0.462, 'pos': 0.538}, 
{'neg': 0.0, 'neu': 0.609, 'pos': 0.391}, 
{'neg': 0.043, 'neu': 0.772, 'pos': 0.185}, 
{'neg': 0.035, 'neu': 0.765, 'pos': 0.2}, 
{'neg': 0.0, 'neu': 0.655, 'pos': 0.345}, 
{'neg': 0.0, 'neu': 0.631, 'pos': 0.369}] 

b = dict() 
for key in a[0].keys(): 
    b[key] = [] 
    for dic in a: 
     b[key].append(dic[key]) 

pd.DataFrame(b) 

enter image description here