如何将多于3层的N嵌套字典转换成层次化的 Dataframe ?
input_dict = {
'.Stock': {
'.No[0]': '3241512)',
'.No[1]': '1111111111',
'.No[2]': '444444444444',
'.Version': '46',
'.Revision': '78'
},
'.Time': '12.11.2022'
}
我所期望:
import pandas as pd
expected_df = pd.DataFrame([{'level_0': '.Stock', 'level_1': '.No_0', "value": '3241512'},
{'level_0': '.Stock', 'level_1': '.No_1', "value": '1111111111',},
{'level_0': '.Stock', 'level_1': '.No_2', "value": '444444444444'},
{'level_0': '.Stock', 'level_1': '.Version', "value": '46'},
{'level_0': '.Stock', 'level_1': '.Revision', "value": '78'},
{'level_0': '.Time', "value": '12.11.2022'}])
| 索引|级别_0|级别_1|价值观|
| - -|- -|- -|- -|
| 第0页|.库存|第0个|小行星3241512|
| 一个|.库存|第1个|小行星11111111|
| 2个|.库存|第二个|小行星4444444444|
| 三个|.库存|.版本|四十六|
| 四个|.库存|二、修订|七十八|
| 五个|时间|不含N|二零二二年十一月十二日|
首先我需要把嵌套字典转换成层次字典列表,然后把层次字典列表转换成 Dataframe 。我该如何转换,请帮助我!
我已经尝试了下面的代码,但它并没有显示完全正确的结果。
pd.DataFrame(input_dict).unstack().to_frame().reset_index()
3条答案
按热度按时间mgdq6dx11#
您可以首先使用递归函数来展开嵌套字典(请参见“获取嵌套字典项的最佳方法”)。
第一个
然后,您需要填充缺少的级别,就像示例中的最后一行一样。您可以使用
zip_longest
来实现此目的,并将值粘贴到最后一个位置。现在您可以创建 Dataframe :
6l7fqoea2#
我找到了解决方案,感谢您的意见:(
| 索引|级别_0|级别_1|价值观|
| - -|- -|- -|- -|
| 第0页|.库存|.0号|小行星3241512|
| 一个|.库存|第1个|小行星11111111|
| 2个|.库存|第二个|小行星4444444444|
| 三个|.库存|.版本|四十六|
| 四个|.库存|二、修订|七十八|
| 五个|时间|不含N|二零二二年十一月十二日|
这解决了字典的6'嵌套级。
3qpi33ja3#
对于您的具体问题,基于this anser的解决方案应该有效:
df:
对于具有更多级别的字典,您应该将循环 Package 为递归函数。