我一直在努力从深度为 D 的嵌套字典转换为PandasDataFrame。
我已经尝试过递归函数,就像下面这个,但是我的问题是,当我迭代一个KEY时,我不知道前一个key是什么。
我也试过用json。normalize,dict的Pandas,但是我总是在列中以点结束...
示例代码:
def iterate_dict(d, i = 2, cols = []):
for k, v in d.items():
# missing here how to check for the previous key
# so that I can create an structure to create the dataframe.
if type(v) is dict:
print('this is k: ', k)
if i % 2 == 0:
cols.append(k)
i+=1
iterate_dict(v, i, cols)
else:
print('this is k2: ' , k, ': ', v)
iterate_dict(test2)
下面是我的字典的一个例子:
# example 2
test = {
'column-gender': {
'male': {
'column-country' : {
'FRENCH': {
'column-class': [0,1]
},
('SPAIN','ITALY') : {
'column-married' : {
'YES': {
'column-class' : [0,1]
},
'NO' : {
'column-class' : 2
}
}
}
}
},
'female': {
'column-country' : {
('FRENCH', 'SPAIN') : {
'column-class' : [[1,2],'#']
},
'REST-OF-VALUES': {
'column-married' : '*'
}
}
}
}
}
我希望 Dataframe 看起来像这样:
欢迎任何建议:)
2条答案
按热度按时间q8l4jmvw1#
如果column-keys始终以
column-
为前缀,则可以创建一个递归函数:编辑:删除不必要的变量和参数
输出量:
h79rfbju2#
我不确定数据如何保持一致,但为了便于理解,我们可以做一些类似以下的事情,请记住,这只是一个关于我们如何处理数据的方法的小演示,您可以花更多时间进行相应的润色:
为了更好地理解,我在每个步骤上都添加了注解。
输出量: