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

Posted

技术标签:

【中文标题】将一系列字典转换为 DataFrame - Pandas【英文标题】:Turn series of dictionaries into a DataFrame - Pandas 【发布时间】:2018-02-02 23:28:52 【问题描述】:

我正在尝试将一系列字典转换为数据框

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

我希望生成的 DataFrame 让每个键都有自己的列。

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

如何使用 Pandas 完成此任务?

【问题讨论】:

【参考方案1】:

可能有更好的方法来做到这一点...但是使用您拥有的结构化数据似乎很容易。

否则看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)

【讨论】:

【参考方案2】:

鉴于您的系列,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

您可以将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

或者你可以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

【讨论】:

以上是关于将一系列字典转换为 DataFrame - Pandas的主要内容,如果未能解决你的问题,请参考以下文章

将列表转换为 DataFrame 并在 DataFrame 列中拆分嵌套字典 - Python 3.6

如何将字典列表转换为 Pyspark DataFrame

如何将嵌套字典转换为 pandas DataFrame?

将 pandas.DataFrame 转换为 Python 中的字典列表

如何将 pandas DataFrame 转换为省略 NaN 值的字典列表?

将 pandas DataFrame 转换为嵌套字典