簡體   English   中英

將 Pandas Dataframe 或 csv 文件轉換為自定義嵌套 Z0ECD11C1D7A287401D148A23BBD7A2F8

[英]Convert Pandas Dataframe or csv file to Custom Nested JSON

我有一個 csv 文件,其 DF 結構如下:

我的 dataframe:

在此處輸入圖像描述

我想使用 python 將數據輸入到以下 JSON 格式。 我查看了幾個鏈接(但我在嵌套部分迷路了)。 我檢查的鏈接:

如何將 pandas dataframe 轉換為結構獨特的嵌套 json

將 dataframe 轉換為嵌套 json

"PHI": 2,
"firstname": "john",
"medicalHistory": {
  "allergies": "egg",
  
"event": {
    "inPatient":{
        "hospitalized": {
        "visit" : "7-20-20",
        "noofdays": "5",
         "test": {
            "modality": "xray"   
        } 
        "vitalSign": {
    "temperature": "32",
        "heartRate": "80"
  
  },
 "patientcondition": {
        "headache": "1",
        "cough": "0"
  }
        },
        "icu": {
            "visit" : "",
          "noofdays": "",
        },
    },
    "outpatient": {
        "visit":"5-20-20",
        "vitalSign": {
   "temperature": "32",
        "heartRate": "80"
  },
  "patientcondition": {
        "headache": "1",
        "cough": "1"
  },
  "test": {
            "modality": "blood"   
        }    
  }
    }

}

如果有人可以幫助我處理嵌套數組,那將非常有幫助。

您需要一個或多個輔助函數來解壓縮表中的數據,如下所示。 編寫主助手 function 以接受兩個 arguments:1. df 和 2. schema。 該模式將用於將 df 解壓縮為 df 中每一行的嵌套結構。 下面的架構是如何為您描述的邏輯子集實現此目的的示例。 雖然不完全是您在示例中指定的內容,但應該足以提示您自己完成任務的 rest。

from operator import itemgetter
groupby_idx = ['PHI', 'firstName']
groups = df.groupby(groupby_idx, as_index=False, drop=False)
schema = {
    "event": {
        "eventType": itemgetter('event'), 
        "visit": itemgetter('visit'),
        "noOfDays": itemgetter('noofdays'),
        "test": {
            "modality": itemgetter('test')
        },
        "vitalSign": {
            "temperature": itemgetter('temperature'),
            "heartRate": itemgetter('heartRate')
        },
        "patientCondition": {
            "headache": itemgetter('headache'),
            "cough": itemgetter('cough')
        }
    }
}

def unpack(obj, schema):
    tmp = {}
    for k, v in schema.items():
        if isinstance(v, (dict,)):
            tmp[k] = unpack(obj, v)
        if callable(v):
            tmp[k] = v(obj)
    return tmp

def apply_unpack(groups, schema):
    results = {}
    for gidx, df in groups:
        events = []
        for ridx, obj in df.iterrows():
            d = unpack(obj, schema)
            events.append(d)
        results[gidx] = events
    return results

unpacked = apply_unpack(groups, schema)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM