从Python数据框到嵌套字典

时间:2020-07-01 09:23:42

标签: python python-3.x

我想使用一个api,并且需要首先将我的数据框放入字典格式。 数据帧df如下所示:

    OrigC  OrigZ  OrigN Weigh  DestC   DestZ    DestN
0      PL     97    TP    59     DE      63       SN

第一行的预期输出:

{"section":[
    {"location":
        {
        "zipCode":
            {"OrigC": "PL",
            "OrigZ":"97"},
        "location": {"id": "1"},
        "OrigN": "TP"
            },
    "carriageParameter":
        {"road":
            {"truckLoad": "Auto"}
        },
    "load":
        {"Weigh": "59",
        "unit": "ton",
        "showEmissionsAtResponse": "true"
        }
    },
    {"location":
        {
        "zipCode":
            {"DestC": "DE",
            "DestZ":"63"},
        "location": {"id": "2"},
        "DestN": "SN"
            },
    "carriageParameter":
        {"road":
            {"truckLoad":"Auto"}
        },
    "unload":
        {"WEIGHTTONS":"59",
        "unit": "ton",
        "showEmissionsAtResponse": "true"
        }
    }]}

请注意,字典中有不需要更改的静态信息。

如何用Python完成?

1 个答案:

答案 0 :(得分:3)

您可以使用迭代。

dic = {}
dic['section'] = []
for ix, row in df.iterrows():
    
    in_dict = {
        'location': {
            'zip_code': {
                'OrigC': row['OrigC'],
                'OrigZ': row['OrigZ'],
                },
            'location': {'id': ix+1}, # I am guessing here.
            'OrigN': 'TP',  
        },
        'CarriageParameter': {
            'road': {
                'truckLoad': 'Auto'}
            },
        'load': {
            'Weigh': str(row['Weigh']),
        } 
        }
    
    
    dic['section'].append(in_dict)

请注意,这并不是全部内容,但我认为足够清晰地说明了这一想法。