gpt4 book ai didi

python - 如何将复杂的字典导入 Pandas ?

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:04 25 4
gpt4 key购买 nike

我从 XML 文件中提取了这些数据:

d = {
'test1': {
0: {'a': {'min': 1, 'mid': 12, 'max': 13},
'b': {'min': 2, 'mid': 22, 'max': 23}},
3: {'a': {'min': 3, 'mid': 32, 'max': 33},
'b': {'min': 4, 'mid': 42, 'max': 43}},
8: {'a': {'min': 5, 'mid': 52, 'max': 53},
'b': {'min': 6, 'mid': 62, 'max': 63}},
},
'test2': {
0: {'a': {'min': 9, 'mid': 12, 'max': 13},
'b': {'min': 8, 'mid': 22, 'max': 23}},
3: {'a': {'min': 7, 'mid': 32, 'max': 33},
'b': {'min': 6, 'mid': 42, 'max': 43}},
8: {'a': {'min': 5, 'mid': 52, 'max': 53},
'b': {'min': 4, 'mid': 62, 'max': 63}},
},
}

我导入它:

ds = pd.DataFrame.from_dict(d)

我想命名我的列然后开始浏览我的数据。

列是:['Tests', 'Id', 'Item']

例如,我想获取所有测试、任何项目和任何 Id 的所有 mid 值。于是我天真地写道:

ds[:,:,:,'min'] 

但是显然不行。

另外,我担心数据帧没有像它应该的那样表示。怎么做才能变成这样?

+-------+----+------+-----+-----+-----+
| | | | min | mid | max |
+-------+----+------+-----+-----+-----+
| Tests | Id | Item | | | |
+-------+----+------+-----+-----+-----+
| | 0 | a | 1 | 12 | 13 |
| | | b | 2 | 22 | 23 |
+ test1 +----+------+-----+-----+-----+
| | 1 | a | 3 | 32 | 33 |
| | | b | 4 | 42 | 43 |
+-------+----+------+-----+-----+-----+
| | 0 | a | 9 | 12 | 13 |
| | | b | 8 | 22 | 23 |
+ test2 +----+------+-----+-----+-----+
| | 1 | a | 7 | 32 | 33 |
| | | b | 6 | 42 | 43 |
+-------+----+------+-----+-----+-----+

最佳答案

你需要在读入它们之后用stack做一些手动转换(这可能很难一步完成,因为通常字典可以嵌套得尽可能深) :

(pd.DataFrame.from_dict(d, orient="index")
.stack().apply(pd.Series)
.stack().apply(pd.Series)
.rename_axis(("Tests", "Id", "Item")))

enter image description here

关于python - 如何将复杂的字典导入 Pandas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com