2017-08-24 49 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} 

可以apply的pd.Series構造函數每一行。 apply將會靈活並且返回一個DataFrame,因爲現在每行都是一個Series。

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

有可能是一個更好的方法來做到這一點......但是這對於您擁有的結構化數據來說似乎很容易。

否則看this post爲改革字典

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