首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何结合两个csv文件创建一个具有特定头名的JSON对象

如何结合两个csv文件创建一个具有特定头名的JSON对象
EN

Stack Overflow用户
提问于 2021-08-16 14:29:24
回答 1查看 218关注 0票数 2

我现在有两个csv表。一个用于Pharmaceuticals,另一个用于Nutraceuticals

这是Pharmaceuticals

代码语言:javascript
复制
                  Drug  Percentile
0     SZ Antipsychotic          57
1              AMG 811          57
2           Colchicine          57
3            Ibuprofen          29
4    Sleep Deprivation          29
5            Rofecoxib          29

这是Nutraceuticals

代码语言:javascript
复制
                                             Drug  Percentile
0                                          Canova          57
1                             Omega-3 fatty acids          43
2                                        Luteolin          29
3   Ethanol Extract of Aurantiochytrium sp. (EEA)          14
4                                         Osthole          14
5                 Arisaema amurense var. serratum          14

基本上,我需要将这两个csv文件组合成一个JSON对象,以便每个表都是一个字典数组,并与它们各自的标签配对。预期的输出是这样的(名称不同,只有结构在这里很重要):

代码语言:javascript
复制
{
"nutraceuticals": [
        {
            "name": "Omega-3 fatty acids",
            "percentile": 38
        },
        {
            "name": "Luteolin",
            "percentile": 25
        },
        {
            "name": "Vitamin D",
            "percentile": 25
        },
        {
            "name": "Probiotics supplements",
            "percentile": 13
        }
    ],
    "pharmaceuticals": [
        {
            "name": "Dexamethasone",
            "percentile": 25
        },
        {
            "name": "Rofecoxib",
            "percentile": 25
        },
        {
            "name": "Ibuprofen",
            "percentile": 25
        },
        {
            "name": "Laquinimod",
            "percentile": 25
        },
        {
            "name": "Lumiliximab",
            "percentile": 25
        }
   ]
}

我现在有这样的代码:

代码语言:javascript
复制
result = Drug_Scoring.to_json(orient="records")
    parsed = json.loads(result)
    parsed = json.dumps(parsed, indent=4)  

它在字典代码中生成正确的格式,在这里:

代码语言:javascript
复制
[
    {
        "Drug": " Canova",
        "Percentile": 57
    },
    {
        "Drug": " Omega-3 fatty acids",
        "Percentile": 43
    },
    {
        "Drug": " Luteolin",
        "Percentile": 29
    },
    {
        "Drug": " Ethanol Extract of Aurantiochytrium sp. (EEA)",
        "Percentile": 14
    }
]

以此类推,但没有将两者结合起来,并且没有适当的标记,例如"pharmaceuticals": ["nutraceuticals": [,我基本上需要两个csv文件名作为JSON对象中的数组标题,然后将两者组合起来。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-16 14:44:38

首先,从两个数据中创建一个字典对象。

代码语言:javascript
复制
d = dict(zip(['Pharmaceuticals','Nutraceuticals'], 
                [Pharmaceuticals,Nutraceuticals]))

out = {k : v.rename(columns={'Drug' : 'name', 'Percentile' : 'percentile'}
        ).to_dict(orient='records')
     for k,v in d.items() }

代码语言:javascript
复制
print(out)

{'Pharmaceuticals': [{'name': 'SZ Antipsychotic', 'percentile': 57},
  {'name': 'AMG 811', 'percentile': 57},
  {'name': 'Colchicine', 'percentile': 57},
  {'name': 'Ibuprofen', 'percentile': 29},
  {'name': 'Sleep Deprivation', 'percentile': 29},
  {'name': 'Rofecoxib', 'percentile': 29}],
 'Nutraceuticals': [{'name': 'Canova', 'percentile': 57},
  {'name': 'Omega-3 fatty acids', 'percentile': 43},
  {'name': 'Luteolin', 'percentile': 29},
  {'name': 'Ethanol Extract of Aurantiochytrium sp. (EEA)', 'percentile': 14},
  {'name': 'Osthole', 'percentile': 14},
  {'name': 'Arisaema amurense var. serratum', 'percentile': 14}]}

那就扔给杰森。

代码语言:javascript
复制
with open('yourfile.json','w') as fp:
    json.dump(out,fp,indent=4)

yourfile.json

代码语言:javascript
复制
{
    "Pharmaceuticals": [
        {
            "name": "SZ Antipsychotic",
            "percentile": 57
        },
        {
            "name": "AMG 811",
            "percentile": 57
        },
        {
            "name": "Colchicine",
            "percentile": 57
        },
        {
            "name": "Ibuprofen",
            "percentile": 29
        },
        {
            "name": "Sleep Deprivation",
            "percentile": 29
        },
        {
            "name": "Rofecoxib",
            "percentile": 29
        }
    ],
    "Nutraceuticals": [
        {
            "name": "Canova",
            "percentile": 57
        },
        {
            "name": "Omega-3 fatty acids",
            "percentile": 43
        },
        {
            "name": "Luteolin",
            "percentile": 29
        },
        {
            "name": "Ethanol Extract of Aurantiochytrium sp. (EEA)",
            "percentile": 14
        },
        {
            "name": "Osthole",
            "percentile": 14
        },
        {
            "name": "Arisaema amurense var. serratum",
            "percentile": 14
        }
    ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68804569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档