使用 pandas groupby 转换唯一值

问题描述

我有这样的输入字典:

{
    "objects": [
        {
            "objType": "master","objName": "sampleOne","objTitle": "Sample One"
        },{
            "objType": "master","objName": "sampleTwo","objTitle": "Sample Two"
        },]
}

并且我想将键 objType 的相同值分组以生成如下字典

{
    "objects": [
        {
            "objType": "master","objDetails": [
            {
                "objName": "sampleOne","ObjectTitle": "Sample One"

            },{
                "objName": "sampleTwo","ObjectTitle": "Sample Two"
            }
        ]
    ]
}

我使用了 pandas groupby 但无法获得所需的输出

解决方法

鉴于您的数据采用多层结构,我不确定 Pandas 是否适合您想要完成的任务。以下函数将根据您的示例输入和所需输出正确解析您的数据。

def transform(di):
    tmp = dict()
    for ntry in di['objects']:
        tval = tmp.pop(ntry['objType'],[])
        indict = dict()
        indict['objName'] = ntry['objName']
        indict['ObjectTitle'] = ntry['objTitle']
        tval.append(indict)
        tmp[ntry['objType']] = tval
    return {'objects': tmp}  

给定输入

di = {
    "objects": [
        {
            "objType": "master","objName": "sampleOne","objTitle": "Sample One"
        },{
            "objType": "master","objName": "sampleTwo","objTitle": "Sample Two"
        }
    ]
}  

transform(di)

产生:

{'objects': 
           {'master': [{'objName': 'sampleOne','ObjectTitle': 'Sample One'},{'objName': 'sampleTwo','ObjectTitle': 'Sample Two'}]}}

相关问答

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