将多列转换为熊猫中的嵌套字典列表

NAB0815

我有一个熊猫数据框,看起来如下

category    sub_cat     vitals      value
HR          EKG         HR_EKG      136
SPO2        SPO2        SpO2_1      86
HR          PPG         HR_PPG_1    135
SPO2        PI          PI_1        4.25
HR          PPG         HR_PULSED   135
NIBP        SBP         NIBPS       73
NIBP        DBP         NIBPD       25
NIBP        MBP         NIBPM       53

我想按类别和 sub_cat 列分组并将其转换为嵌套字典列表,如下所示

[{
    "HR":
    {
        "EKG":
        {
            "HR_EKG": 136
        },
        "PPG":
        {
            "HR_PPG_1": 135,
            "HR_PULSED": 135
        }
    }
  },
  {
    "NIBP":
    {
        "SBP":
        {
            "NIBPS": 73
        },
        "DBP":
        {
            "NIBPD": 25
        },
        "MBP":
        {
            "NIBPM": 53
        }
    }
  },
  {
    "SPO2":
    {
        "SPO2":
        {
            "SpO2_1": 86
        },
        "PI":
        {
            "PI_1": 4.25
        }
    }
}]

我可以按(类别、生命体征和值)或(子类别、生命体征和值)分组,但无法按所有 4 列进行分组。这是我尝试过的,适用于 3 列

df = df.groupby(['sub_cat']).apply(lambda x: dict(zip(x['vitals'], x['value'])))
理查德克

一系列嵌套的groupby++调用将做到这一点applyto_dict

dct = df.groupby('category').apply(
    lambda category: category.groupby('sub_cat').apply(
        lambda sub_cat: sub_cat.set_index('vitals')['value'].to_dict()
    ).to_dict()
).to_dict()

输出:

>>> import json
>>> print(json.dumps(dct, indent=4))
{
    "HR": {
        "EKG": {
            "HR_EKG": 136.0
        },
        "PPG": {
            "HR_PPG_1": 135.0,
            "HR_PULSED": 135.0
        }
    },
    "NIBP": {
        "DBP": {
            "NIBPD": 25.0
        },
        "MBP": {
            "NIBPM": 53.0
        },
        "SBP": {
            "NIBPS": 73.0
        }
    },
    "SPO2": {
        "PI": {
            "PI_1": 4.25
        },
        "SPO2": {
            "SpO2_1": 86.0
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章