分解“列表”并分解并解压“词典列表”

问题描述

我有如下结构的数据。简而言之,每当找到列表时,我都会尝试执行此操作 - 展开它,但是每当发现包含字典的列表时 - 展开它 AND 取消嵌套/解压密钥。

b = { 
    "_id" : "5f2","list1" : [
        {
            "dashbId" : 1019,"siteId" : 1
        }
    ],"list2" : [1,2,3,4]
}

动态代码

root = json_normalize(b)
x = (root.applymap(type) == list).all()
y = x.index[x].tolist()
nest_dict = ['[',']']

if len(y) == 0:
    document = root
else:
    for i in y:
        m = str(root[i][0]).strip('[]')
        if m[0] == '{' and m[-1] == '}':
            if any(k in m for k in nest_dict) == True:
                document = root
            elif any(k in m for k in nest_dict) == False:
                l = [root.drop(y,1),]
                x = l.append(pd.json_normalize(b,record_path=i))
                document= pd.concat(l,axis=1)

    document= root.explode(i)
    if (document[i].astype(str).str.isnumeric().all()) == True:
                x = (document[i].to_frame().columns)
                document[x] = document[x].fillna(0).astype(int)
    

print(document)

电流输出

   _id                             list1  list2
0  5f2  [{'dashbId': 1019,'siteId': 1}]      1
0  5f2  [{'dashbId': 1019,'siteId': 1}]      2
0  5f2  [{'dashbId': 1019,'siteId': 1}]      3
0  5f2  [{'dashbId': 1019,'siteId': 1}]      4

期望输出

   _id    dashbId   siteId     list2
0  5f2      1019         1        1
0  5f2      1019         1        2
0  5f2      1019         1        3
0  5f2      1019         1        4

注意:代码中不能指定列名,必须是动态的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...