【问题标题】:How to convert to CSV to Keyed JSON?如何将 CSV 转换为 Keyed JSON?
【发布时间】:2021-06-05 06:41:55
【问题描述】:

目前,我正在使用以下代码创建 JSON:

import pandas as pd
import csv
data = pd.read_csv(r'C:\Users\user\Downloads\config_all_env.csv')
# print(data.to_string())
df = pd.DataFrame(data)
# print(df)

json_file = df.to_json(orient='index',indent=4)
print(json_file)

我的“config_all_env.csv”看起来像这样

_key,index,source
123456789100:LogGroup1,index1,Account1-123456789100:LogGroup1
123456789100:LogGroup2,index1,Account1-123456789100:LogGroup2
678901234200:LogGroup3,index2,Account2-678901234200:LogGroup3
678901234200:LogGroup4,index2,Account2-678901234200:LogGroup4

输出是这样的:

{
    "0":{
        "_key":"123456789100:LogGroup1",
        "index":"index1",
        "source":"Account1-123456789100:LogGroup1"
    },
    "1":{
        "_key":"123456789100:LogGroup2",
        "index":"index1",
        "source":"Account1-123456789100:LogGroup2"
    },
    "2":{
        "_key":"678901234200:LogGroup3",
        "index":"index2",
        "source":"Account2-678901234200:LogGroup3"
    },
    "3":{
        "_key":"678901234200:LogGroup4",
        "index":"index2",
        "source":"Account2-678901234200:LogGroup4"
    }
}

但是,这个网站:https://www.convertcsv.com/csv-to-json.htm 有一个 Keyed JSON 选项,在解析后接收到这个输出:

{
   "123456789100:LogGroup1": {
      "index": "index1",
      "source": "Account1-123456789100:LogGroup1"
   },
   "123456789100:LogGroup2": {
      "index": "index1",
      "source": "Account1-123456789100:LogGroup2"
   },
   "678901234200:LogGroup3": {
      "index": "index2",
      "source": "Account2-678901234200:LogGroup3"
   },
   "678901234200:LogGroup4": {
      "index": "index2",
      "source": "Account2-678901234200:LogGroup4"
   }
}

如何使用 Python 实现这一点,因为每次都打开这个网站并进行转换是不可行的?

【问题讨论】:

    标签: python json csv key


    【解决方案1】:

    如果您首先将“_key”列设置为 pandas 数据框的索引,这应该可以实现您想要的(如果我正确解释了您的问题)。

    import pandas as pd
    
    my_data = pd.DataFrame.from_dict({
        "0":{
            "_key":"123456789100:LogGroup1",
            "index":"index1",
            "source":"Account1-123456789100:LogGroup1"
        },
        "1":{
            "_key":"123456789100:LogGroup2",
            "index":"index1",
            "source":"Account1-123456789100:LogGroup2"
        },
        "2":{
            "_key":"678901234200:LogGroup3",
            "index":"index2",
            "source":"Account2-678901234200:LogGroup3"
        },
        "3":{
            "_key":"678901234200:LogGroup4",
            "index":"index2",
            "source":"Account2-678901234200:LogGroup4"
        }
    }, orient="index")
    
    my_dict = my_data.set_index("_key").to_json(orient='index',indent=4)
    

    输出:

    {
        "123456789100:LogGroup1":{
            "index":"index1",
            "source":"Account1-123456789100:LogGroup1"
        },
        "123456789100:LogGroup2":{
            "index":"index1",
            "source":"Account1-123456789100:LogGroup2"
        },
        "678901234200:LogGroup3":{
            "index":"index2",
            "source":"Account2-678901234200:LogGroup3"
        },
        "678901234200:LogGroup4":{
            "index":"index2",
            "source":"Account2-678901234200:LogGroup4"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2019-08-21
      相关资源
      最近更新 更多