首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同集合的自定义嵌套json结构

具有不同集合的自定义嵌套json结构
EN

Stack Overflow用户
提问于 2019-04-30 03:18:09
回答 2查看 87关注 0票数 0

我是python新手,pandas有一个csv文件

代码语言:javascript
复制
.----.---------.-------.-------------------.-------------------.-------------------.-------------------.
| id | country | state | cold_stress_score | cold_stress_level | heat_stress_score | heat_stress_level |
:----+---------+-------+-------------------+-------------------+-------------------+-------------------:
|  1 | USA     | NJ    |             0.003 | low               |             0.673 | moderate          |
:----+---------+-------+-------------------+-------------------+-------------------+-------------------:
|  2 | USA     | NJ    |             0.001 | high              |               0.2 | high              |
:----+---------+-------+-------------------+-------------------+-------------------+-------------------:
|  3 | USA     | NJ    |             0.004 | moderate          |               0.3 | low               |
:----+---------+-------+-------------------+-------------------+-------------------+-------------------:
|  4 | USA     | NY    |             0.005 | moderate          |               0.4 | moderate          |
:----+---------+-------+-------------------+-------------------+-------------------+-------------------:
|  5 | USA     | NY    |             0.006 | high              |               0.5 | high              |
:----+---------+-------+-------------------+-------------------+-------------------+-------------------:
|  6 | USA     | NY    |             0.009 | low               |               0.6 | low               |
'----'---------'-------'-------------------'-------------------'-------------------'-------------------'

我想把它转换成嵌套的json方式。

期望的json

代码语言:javascript
复制
  {
  "id":1,
  "country": "USA",
  "state": "NJ",
  "cold_stress":{
    "cold_stress_score" : 0.003,
    "cold_stress_level": "low",
  },
  "heat_stress":{
    "heat_stress_score" : 0.0673,
    "heat_stress_level": "moderate",

  }

}

我尝试过这个解决方案Convert Pandas Dataframe to nested JSON

代码语言:javascript
复制
j = (df.groupby(['id','country','state'], as_index=False)
             .apply(lambda x: x[['cold_stress_score','cold_stress_level']].to_dict('r'))
             .reset_index()
             .rename(columns={0:'cold_stress'})
             .to_json(orient='records'))

我想在上面返回的代码中添加热应力。

代码语言:javascript
复制
  "id":1,
  "country": "USA",
  "state": "NJ",
  "cold_stress":{
    "cold_stress_score" : 0.003,
    "cold_stress_level": "low",
  }
}

我如何能够添加heat_stress我的csv太大,并且正在寻找上面填充的动态值,如冷应激

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-30 16:14:26

如果你很少或根本不像这里那样做处理,那么pandas就是过度杀伤力和太复杂了。我的建议是坚持使用标准库中的csvjson模块。

代码可能是(或多或少):

代码语言:javascript
复制
with open(inputfile) as fdin, open (outputfile, "w") as fdout:
    rd = csv.DictReader(fdin)
    js = [{'id': int(row['id']), 'country': row['country'], 'state': row['state'],
           'cold_stress': {'cold_stress_code': row['cold_stress_code'],
                           'cold_stress_level': row['cold_stress_level']},  
           'heat_stress': {'heat_stress_code': row['heat_stress_code'],
                           'heat_stress_level': row['heat_stress_level']}, 
           } for row in rd]
    json.dump(js, fdout, indent=2)
票数 1
EN

Stack Overflow用户

发布于 2019-04-30 03:47:29

你试过像这样的东西吗?

代码语言:javascript
复制
# create first grouping (leave heat columns same)
j = (df.groupby(['id','country','state', 'heat_stress_score', 'heat_stress_level'], as_index=False)
             .apply(lambda x: x[['cold_stress_score','cold_stress_level']].to_dict('r'))
             .reset_index()
             .rename(columns={0:'cold_stress'}))
# care about heat grouping
j = (j.groupby(['id','country','state', 'cold_stress'], as_index=False)
             .apply(lambda x: x[['heat_stress_score','heat_stress_level']].to_dict('r'))
             .reset_index()
             .rename(columns={0:'heat_stress'})
             .to_json(orient='records'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55909548

复制
相关文章

相似问题

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