python - 如何将列表中的字典转换为Python中的DataFrame?

标签 python list pandas dictionary dataframe

这里是Python初学者。我正在努力将我的 dicts 列表转储到 pandas.DataFrame 中。我的数据具有以下结构。

a = {'Scores': {'s1': [{'Math': '95',
'Science': '74.5',                  
'English': '60.5'},                         
{'Math': '87.9',              
'Science': '97.3',                  
'English': '78.3'}],                        
's2': [{'Math': '67.2',       
'Science': '74.2',                        
'English': '89'}]}}  

我的pandas.Dataframe列应该是科目“数学”、“科学”和“英语”,行应该是分数。这些列是动态创建的,因此我无法明确提及调用它的列名称。我所需要的只是键 S1...Sn 的值。

这是我迄今为止尝试过的:

b = a.pop('Scores')
c = list(b.values())
df = pd.DataFrame(c)

这将我的数据框显示为:

                                               0  \
0  {'Math': '95', 'Science': '74.5', 'English': '...
1  {'Math': '67.2', 'Science': '74.2', 'English':...

                                               1
0  {'Math': '87.9', 'Science': '97.3', 'English':...
1                                               None

相反,我正在寻找:

Math  Science  English
95    74.5     60.5
87.9  97.3     78.3
67.2  74.2     89

如果我能得到任何帮助,我将不胜感激。

最佳答案

您可以在迭代字典的值后使用 sum。

代码:

import pandas as pd

data = sum([x for x in a['Scores'].values()], [])
print(pd.DataFrame(data, columns=['Math', 'Science', 'English']))

测试数据:

a = {'Scores': {'s1': [{'Math': '95',
                        'Science': '74.5',
                        'English': '60.5'},
                       {'Math': '87.9',
                        'Science': '97.3',
                        'English': '78.3'}],
                's2': [{'Math': '67.2',
                        'Science': '74.2',
                        'English': '89'}]}}

结果:

   Math Science English
0  67.2    74.2      89
1    95    74.5    60.5
2  87.9    97.3    78.3

关于python - 如何将列表中的字典转换为Python中的DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43108442/

相关文章:

python - 为什么使用 range() 来单独让索引和元素同时可用是不好的?

python - 使用多处理时拥有全局变量是否有效?

python - 如何使用 matplotlib 绘制条形范围图?

php - 如何在 HTML 中为 mySQL 使用 PHP

python - 使用 print 语句在 Python 中显示变量值?

python - 为什么 python 在列表理解中要求括号

Python嵌套列表(二维数组)引用

python - 将2个不等长的列表映射到字典

python - 在 Pandas 中如何替换列中的某些项目?

python - 从 Pandas (Python) 对象中提取数值