У меня есть 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'