【问题标题】:how to convert multi valued CSV to Json如何将多值 CSV 转换为 Json
【发布时间】:2019-11-01 01:30:45
【问题描述】:

我有一个包含 4 列数据的 csv 文件,如下所示。

type,MetalType,Date,Acknowledge     
Metal,abc123451,2018-05-26,Success
Metal,abc123452,2018-05-27,Success
Metal,abc123454,2018-05-28,Failure
Iron,abc123455,2018-05-29,Success
Iron,abc123456,2018-05-30,Failure

(我只是在上面的示例数据中提供了标题,但在我的情况下,我的数据中没有标题)

如何将上述 csv 文件转换为以下格式的 Json...

第一列:属于 --> "type": "Metal"

第二栏:MetalType: "values" : "value": "abc123451"

第三栏:"Date": "values":"value": "2018-05-26"

第 4 栏:"Acknowledge": "values":"value": "Success"

剩下的所有列都是默认值。

按照以下格式,

{
  "entities": [
    {
      "id": "XXXXXXX",
      "type": "Metal",
      "data": {
        "attributes": {
          "MetalType": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": "abc123451"
              }
            ]
          },
          "Date": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": "2018-05-26"
              }
            ]
          },
          "Acknowledge": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": "Success"
              }
            ]
          }
        }
      }
      }
    ]
    }

【问题讨论】:

标签: python json linux pandas dataframe


【解决方案1】:

虽然 jww 是对的,但我还是为你构建了一些东西:

我使用 pandas 导入 csv:

df = pd.read_csv('data.csv')

然后我为您要添加的词典创建一个模板:

d_json = {"entities": []}
template = {
      "id": "XXXXXXX",
      "type": "",
      "data": {
        "attributes": {
          "MetalType": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": ""
              }
            ]
          },
          "Date": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": ""
              }
            ]
          },
          "Acknowledge": {
            "values": [
              {
                "source": "XYZ",
                "locale": "Australia",
                "value": ""
              }
            ]
          }
        }
      }
      }

现在你只需要填写字典:

for i in range(len(df)):
    d = template
    d['type'] = df['type'][i]
    d['data']['attributes']['MetalType']['values'][0]['value'] = df['MetalType'][i]
    d['data']['attributes']['Date']['values'][0]['value'] = df['Date'][i]
    d['data']['attributes']['Acknowledge']['values'][0]['value'] = df['Acknowledge'][i]

    d_json['entities'].append(d)

我知道我迭代 df 的方式有点丑,也许有人知道更干净的方式。

干杯!

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多