我正在寻找将DataFrame转换为嵌套字典的通用方法
这是一个示例数据框
name v1 v2 v3
0 A A1 A11 1
1 A A2 A12 2
2 B B1 B12 3
3 C C1 C11 4
4 B B2 B21 5
5 A A2 A21 6
列数可能不同,列名也可能不同。
像这样:
{
'A' : {
'A1' : { 'A11' : 1 }
'A2' : { 'A12' : 2 , 'A21' : 6 }} ,
'B' : {
'B1' : { 'B12' : 3 } } ,
'C' : {
'C1' : { 'C11' : 4}}
}
实现这一目标的最佳途径是什么?
我得到的最接近的是zip
函数,但还没有设法使它工作在一个以上的级别(两列)。
5条答案
按热度按时间olqngx591#
我不明白为什么dict中没有
B2
,我也不确定在列值重复的情况下(我的意思是除了最后一个之外的所有列值)会发生什么,假设第一个是疏忽,我们可以使用递归:其产生
不过,使用非Pandas的方法可能更简单:
jm81lzqq2#
你可以像下面这样简单地重建你的字典
如果你确定你的叶子不会重叠,替换最后一行
与
要获得所需的输出:
用于测试的样本数据:
busg9geu3#
这里有一些选项,你可以通过这些选项获得不同形式的输出。
下面是一种创建json格式的方法,然后按字面计算它以创建实际的dict
xxhby3vn4#
应该有帮助,是最简单的方法。
dluptydi5#
下面是使用defaultdict的另一个解决方案
或: