Как получить строку в формате JSON в таблицу - PullRequest
0 голосов
/ 10 октября 2019

У меня есть следующие строковые данные JSON. Как я могу преобразовать data в табличный формат в R или Python?

Я пробовал df = pd.DataFrame(data), но это не работает, потому что data это строка.

data = '{"Id":"048f7de7-81a4-464d-bd6d-df3be3b1e7e8","RecordType":20, "CreationTime":"2019-10-08T12:12:32","Operation":"SetScheduledRefresh", "OrganizationId":"39b03722-b836-496a-85ec-850f0957ca6b","UserType":0, "UserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36", "ItemName":"ASO Daily Statistics","Schedules":{"RefreshFrequency":"Daily", "TimeZone":"E. South America Standard Time","Days":["All"], "Time":["07:30:00","10:30:00","13:30:00","16:30:00","19:30:00","22:30:00"]}, "IsSuccess":true,"ActivityId":"4e8b4514-24be-4ba5-a7d3-a69e8cb8229e"}'

Желаемый вывод:

output = 
------------------------------------------------------------------
ID                                      | RecordType | CreationTime
048f7de7-81a4-464d-bd6d-df3be3b1e7e8    | 20         | 2019-10-08T12:12:32

Ошибка:

ValueError                                Traceback (most recent call last)
<ipython-input-26-039b238b38ef> in <module>
----> 1 df = pd.DataFrame(data)

e:\Anaconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
    483                 )
    484             else:
--> 485                 raise ValueError("DataFrame constructor not properly called!")
    486 
    487         NDFrame.__init__(self, mgr, fastpath=True)

ValueError: DataFrame constructor not properly called!

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

В Python:

import pandas as pd
from ast import literal_eval
from pandas.io.json import json_normalize

data = '{"Id":"048f7de7-81a4-464d-bd6d-df3be3b1e7e8","RecordType":20, "CreationTime":"2019-10-08T12:12:32","Operation":"SetScheduledRefresh", "OrganizationId":"39b03722-b836-496a-85ec-850f0957ca6b","UserType":0, "UserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36", "ItemName":"ASO Daily Statistics","Schedules":{"RefreshFrequency":"Daily", "TimeZone":"E. South America Standard Time","Days":["All"], "Time":["07:30:00","10:30:00","13:30:00","16:30:00","19:30:00","22:30:00"]}, "IsSuccess":true,"ActivityId":"4e8b4514-24be-4ba5-a7d3-a69e8cb8229e"}'

data = data.replace('true', 'True')
data = literal_eval(data)

{'ActivityId': '4e8b4514-24be-4ba5-a7d3-a69e8cb8229e',
 'CreationTime': '2019-10-08T12:12:32',
 'Id': '048f7de7-81a4-464d-bd6d-df3be3b1e7e8',
 'IsSuccess': True,
 'ItemName': 'ASO Daily Statistics',
 'Operation': 'SetScheduledRefresh',
 'OrganizationId': '39b03722-b836-496a-85ec-850f0957ca6b',
 'RecordType': 20,
 'Schedules': {'Days': ['All'],
               'RefreshFrequency': 'Daily',
               'Time': ['07:30:00',
                        '10:30:00',
                        '13:30:00',
                        '16:30:00',
                        '19:30:00',
                        '22:30:00'],
               'TimeZone': 'E. South America Standard Time'},
 'UserAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
              '(KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
 'UserType': 0}

Создание кадра данных:

df = json_normalize(data)

                                   Id  RecordType         CreationTime            Operation                        OrganizationId  UserType                                                                                                            UserAgent              ItemName  IsSuccess                            ActivityId Schedules.RefreshFrequency              Schedules.TimeZone Schedules.Days                                                Schedules.Time
 048f7de7-81a4-464d-bd6d-df3be3b1e7e8          20  2019-10-08T12:12:32  SetScheduledRefresh  39b03722-b836-496a-85ec-850f0957ca6b         0  Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36  ASO Daily Statistics       True  4e8b4514-24be-4ba5-a7d3-a69e8cb8229e                      Daily  E. South America Standard Time          [All]  [07:30:00, 10:30:00, 13:30:00, 16:30:00, 19:30:00, 22:30:00]
0 голосов
/ 10 октября 2019

Вам понадобится библиотека reticulate: вам нужно будет изменить все true на True. Посмотрите на код ниже

a <-  'string = {"Id":"048f7de7-81a4-464d-bd6d-df3be3b1e7e8","RecordType":20,
                 "CreationTime":"2019-10-08T12:12:32","Operation":"SetScheduledRefresh",
                 "OrganizationId":"39b03722-b836-496a-85ec-850f0957ca6b","UserType":0,
                 "UserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
                 "ItemName":"ASO Daily Statistics","Schedules":{"RefreshFrequency":"Daily",
                 "TimeZone":"E. South America Standard Time","Days":["All"],
                 "Time":["07:30:00","10:30:00","13:30:00","16:30:00","19:30:00","22:30:00"]},
                 "IsSuccess":true,"ActivityId":"4e8b4514-24be-4ba5-a7d3-a69e8cb8229e"}'

data.frame(reticulate::py_eval(gsub('true','True',sub('.*=\\s+','',a))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...