как конвертировать многозначный CSV в Json - PullRequest
0 голосов
/ 18 июня 2019

У меня есть CSV-файл с данными 4 столбцов, как показано ниже.

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 в следующем формате ...

1-й столбец: принадлежит -> "type": "Metal"

2-я колонна: MetalType: "values" : "value": "abc123451"

3-й столбец: "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"
              }
            ]
          }
        }
      }
      }
    ]
    }

1 Ответ

0 голосов
/ 18 июня 2019

Несмотря на то, что jww прав, я создал что-то для вас:

Я импортирую CSV, используя pandas:

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 довольно уродлив, может быть, кто-то знает более чистый способ.

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...