Добавьте отсутствующие поля с нулевыми значениями в соответствии с позицией, указанной в файле конфигурации в Python при анализе данных файла JSON - PullRequest
0 голосов
/ 19 мая 2019

У меня есть файл конфигурации

Position,ColumnName
1,TXS_ID
4,TXX_NAME
8,AGE

Согласно вышеуказанной позиции у меня есть 1, 4, 8 --- у нас есть только 3 столбца.Между 1 и 4 у нас нет позиции 2,3, где я хочу заполнить их пустыми значениями.Согласно приведенному выше файлу конфигурации, я пытаюсь проанализировать данные из файла Json с помощью Python, но у меня есть сценарий, в котором мне нужно определить столбцы на основе позиции, как указано выше.Когда скрипт Python запущен, если «TXS_ID» доступен, он должен выбрать данные из файла JSON, и, поскольку у меня нет полей 2 и 3, я хочу оставить их равными Null.

Пример выходного файла

TSX_ID,,,TXX_NAME,,,,AGE
10000,,,AAAAAAAAA,,,,40

Согласно указанному мною файлу конфигурации, данные должны быть извлечены из файла Json, а если позиция отсутствует в соответствии с приведенным выше примером, она должна заполняться нулями,Пожалуйста, помогите мне, если есть возможность, которую я могу достичь.

Ниже приведен пример файла Json.

{
   "entities": [
        {
          "id": "XXXXXXXXXXXXXXX",
           "data": {
            "attributes": {
              "TSX_ID": {
                "values": [
                  {
                    "value": 10000
                  }
                ]
              },
              "TXX_NAME": {
                "values": [
                  {
                    "value": "AAAAAAAAA"
                  }
                ]
              },

               "AGE": {
                "values": [
                  {
                    "value": "40"
                  }
                ]
              }
            }      
          }
       }
    ]
}

1 Ответ

0 голосов
/ 22 мая 2019

Предполагая, что файл конфигурации строка 1,TXS_ID имеет опечатку и на самом деле 1,TSX_ID, эта программа работает с вашими примерами данных (см. Пояснения в комментариях):

import pandas
# read the "config file" into a Series of the "ColumnName"s:
config = pandas.read_csv('config', index_col='Position', squeeze=True)
maxdex = config.index[-1]   # get the maximum Position
# fill the Positions missing in the "config file" with empty "ColumnName"s:
config = config.reindex(range(1, maxdex+1), fill_value='')

import json
sample = json.load(open('sample.json'))
# create an empty DataFrame with the desired columns:
output = pandas.DataFrame(columns=config.values)
# now insert the nested JSON data values into the given columns:
for a in config.values:
    if a:   # only if not an empty column name, of course
        output[a] = [av['value'] for e in sample['entities']
                                 for av in e['data']['attributes'][a]['values']]

output.to_csv('output.csv', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...