从熊猫数据框创建嵌套的JSON对象

时间:2019-12-04 14:02:03

标签: python json pandas

我正在尝试从Pandas df的Python脚本中为API提交创建嵌套的JSON对象。 API文档/示例位于https://order.kuebix.com/swagger-ui.html#/Orders/addOrderUsingPOST_2

当我在Alteryx中执行此操作时,可以使用“。”控制嵌套。字符。使用诸如“ first_level.second_level.name”之类的变量从平面数据创建复杂的JSONS非常简单。我已经在pandas和json.dumps中尝试了to_json函数,但是我无法复制此简单功能。

我现在有一个df,其列名如'poMasterList.orderNumber.orderLineDetails.orderLineNumber.deliveryDate'

我知道我可以使用一些功能或嵌套一些for循环来做到这一点,但我希望存在一些更简单的方法。

d = [{"billToAccount":"aaa","billToAddress.city":"Somewhere","billToAddress.companyName":"Something",
     "billToAddress.country.name":"United States","billToAddress.postal":"01864","billToAddress.state":"MA",
     "billToAddress.street":"123 Street St","billToAddress.street2":"Suite 100","client.id":"123456789",
     "destinationAddress.city":"OtherCity","destinationAddress.companyName":"other company",
     "destinationAddress.country.name":"UNITED STATES","destinationAddress.postal":"46260","destinationAddress.state":"FL",
     "destinationAddress.street":"500 Main St","modeOfTransport":"LTL","orderDate":"2019-12-02",
     "orderLineDetails.itemDesc":"thing ordered","orderLineDetails.lineNum":"1","orderLineDetails.orderQuantity":"1",
     "orderLineDetails.poNumber":"12345-678","orderLineDetails.quantityUom":"EA","orderLineDetails.sku":"00000",
     "orderLineDetails.soNumber":"654321","orderLineDetails.unitWeight":"20","orderLineDetails.weightUom":"LBS","orderNum":"2",
     "orderType":"OUTBOUND","originAddress.city":"Nashville","originAddress.companyName":"Corp corp",
     "originAddress.country.name":"United States","originAddress.postal":"37000","originAddress.state":"TN",
     "originAddress.street":"5050 Street Addr","paymentType":"OUTBOUND PREPAID","pickupAppointmentDate":"2019-12-02"}]

dat = pd.DataFrame.from_dict(d)
dat
Desired Output:
{"poMasterList":[{"billToAccount":"aaa","billToAddress":{"city":"Somewhere","companyName":"Something","country":{"name":"United States"},"postal":"01864","state":"MA","street":"123 Street St","street2":"Suite 100"},"client":{"id":"123456789"},"destinationAddress":{"city":"OtherCity","companyName":"other company","country":{"name":"UNITED STATES"},"postal":"46260","state":"FL","street":"500 Main St"},"modeOfTransport":"LTL","orderDate":"2019-12-02","orderLineDetails":[{"itemDesc":"thing ordered","lineNum":"1","orderQuantity":"1","poNumber":"12345-678","quantityUom":"EA","sku":"00000","soNumber":"654321","unitWeight":"20","weightUom":"LBS"}],"orderNum":"2","orderType":"OUTBOUND","originAddress":{"city":"Nashville","companyName":"Corp corp","country":{"name":"United States"},"postal":"37000","state":"TN","street":"5050 Street Addr"},"paymentType":"OUTBOUND PREPAID","pickupAppointmentDate":"2019-12-02"}]}

0 个答案:

没有答案