将一系列词典转换为DataFrame - Pandas

Sim*_*mon 0 python dictionary pandas

我试图将一系列字典转换为数据帧

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}
Run Code Online (Sandbox Code Playgroud)

我希望生成的DataFrame让每个键都是它自己的列.

neg   neu     pos
0.0.  0.462   0.538
0.0   0.609   0.391
..    ..      ..
Run Code Online (Sandbox Code Playgroud)

我怎么能用熊猫来做到这一点?

ayh*_*han 7

鉴于你的系列, 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}
Run Code Online (Sandbox Code Playgroud)

您可以将Series转换为列表并调用DataFrame构造函数:

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
Run Code Online (Sandbox Code Playgroud)

或者你可以apply将pd.Series构造函数添加到每一行.apply将灵活并返回一个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
Run Code Online (Sandbox Code Playgroud)