这里是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/