【问题标题】:Convert the dataframe to JSON Based on Column name根据列名将数据框转换为 JSON
【发布时间】:2019-12-02 18:05:34
【问题描述】:

我有一个如下所示的数据框,我只提供一行!

Vessel_id,Org_id,Vessel_name,Good_Laden_Miles_Min,Good_Ballast_Miles_Min,Severe_Laden_Miles_Min,Severe_Ballast_Miles_Min


1,5,"ABC",10,15,25,35

我想把dataframe转成下面这种格式的json,

{ 
   Vessel_id:1,
   Vessel_name:"ABC",
   Org_id:5,
   WeatherGood:{ 
      Good_Laden_Miles_Min:10,
      Good_Ballast_Miles_Min:15
   },
   weatherSevere:{ 
      Severe_Laden_Miles_Min:25,
      Severe_Ballast_Miles_Min:35
   }
}

如何将所有以 good 开头的列加入 WeatherGood 并转换为 JSON?

【问题讨论】:

    标签: python json pandas dataframe


    【解决方案1】:

    您可以先将数据框转换为记录字典,然后将每条记录转换为您想要的格式。最后,将记录列表转换为 JSON。

    import json
    
    records = df.to_dict('records')
    for record in records:
        record['WeatherGood'] = {
            k: record.pop(k) for k in ('Good_Laden_Miles_Min', 'Good_Ballast_Miles_Min')
        }
        record['WeatherSevere'] = {
            k: record.pop(k) for k in ('Severe_Laden_Miles_Min', 'Severe_Ballast_Miles_Min')
        }
    >>> json.dumps(records)
    '[{"Vessel_id": 1, "Org_id": 5, "Vessel_name": "ABC", "WeatherGood": {"Good_Laden_Miles_Min": 10, "Good_Ballast_Miles_Min": 15}, "WeatherSevere": {"Severe_Laden_Miles_Min": 25, "Severe_Ballast_Miles_Min": 35}}]'
    

    【讨论】:

    • 如果 Good_Laden_Miles_Min 列包含 NAN 值,那将是有效的 json 吗?
    • 请参阅这篇文章以了解带有 JSON 的 NaN 值:stackoverflow.com/questions/28639953/python-nan-json-encoder 根据您的用例,您还可以将 NaN 转换为哨兵值。
    • 所以我可以像这样给出 json.dumps(records,ignore_nan=True) ???
    • import simplejson as json之后
    • 您是否使用 Python 3.5 或更早版本的字典?顺序无关紧要,尽管它使数据更易于阅读。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 2020-05-15
    • 2019-02-08
    • 2023-02-23
    • 2017-10-17
    • 2020-09-02
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多