Как преобразовать pandas DataFrame в указанный формат c json - PullRequest
0 голосов
/ 20 марта 2020

У меня есть pandas кадр данных в этом формате:

DataProvider,Id,Name,Time

ABC,f8453e99-516f-4f15-a3bd-8749089b6934,"xyz",43200

ABC,f8453e99-516f-4f15-a3bd-8749089b6934,"123",43200

ABC,00453e99-516f-4f15-a3bd-8749089b6934,"xyz",43200

Я хочу сгенерировать вывод в этом формате (json):

  {
  "dataProviderId":"ABC",
  "items": [
    {
    "Id":"f8453e99-516f-4f15-a3bd-8749089b6934",
    "data": [
      {"Name":"xyz","Time":43200},
      {"Name":"xyz","Time":43200}
    ],
    },
    {
    "Id":"00453e99-516f-4f15-a3bd-8749089b6934",
    "data": [
        {"Name":"xyz","Time":43200}
    ]
    }

Это то, что я пробовал до сих пор. Я пытаюсь сгруппировать поля «Имя» и «Время» сначала в словарь, а затем назвать его «данные». После этого я сделаю еще одну группу и соберу «data» и «Id» и назову это «items». После этого, я думаю, я могу загрузить результаты в требуемый формат json, используя df.to_ json ()

Пока этот код:

import pandas as pd
import os

df = pd.read_csv('bq-results-20200320-121645-a47v3t1cq9op.csv',encoding='UTF-8')

output = (df.groupby(['dataProviderId', 'Id'], as_index=False)
     .apply(lambda x: dict(zip(['Name','Time''],x[['Name','Time']]))).reset_index(name='data'))

Однако это вывод, который я получаю:

    dataProviderId  Id  data
0   lifesight   0016b4a4-c807-497f-b86d-eec8bd53f11f    {'Name': 'Name', 'Time': 'Time'}
1   lifesight   0057eb21-93f7-4818-af15-871a5f131006    {'Name': 'Name', 'Time': 'Time'}
2   lifesight   00b86381-c697-496b-b45f-334fc1247914    {'Name': 'Name', 'Time': 'Time'}
3   lifesight   0163b87e-f59b-4fc5-8c2e-78cb17b47404    {'Name': 'Name', 'Time': 'Time'}
4   lifesight   01c5d810-18b9-425a-bc2a-03bac44f675f    {'Name': 'Name', 'Time': 'Time'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...