Преобразовать фрейм данных в JSON с 1 общезначным столбцом в качестве поля массива - PullRequest
0 голосов
/ 05 июля 2018

Я немного новичок в программировании на Python. У меня есть небольшое требование, когда мне нужно перечислить всех клиентов и их суммы за две недели в формате JSON. В настоящее время у меня есть датафрейм таким образом -

  FortNight   AmountValue   Customer
  2018-04-29   339632.00    10992     
  2018-04-29   27282.00     10994      
  2018-04-29   26353.00     10995      
  2018-04-29   24797.00     11000  
  2018-04-29   21093.00     10990

Ожидается -

"Apr-2FN-2018":[           
{"Customer":"10992","AmountValue":"339632.00"},
{"Customer":"10994","AmountValue":"27282.00"},
{"Customer":"10995","AmountValue":"26353.00"},
{"Customer":"11000","AmountValue":"24797.00"},
{"Customer":"10990","AmountValue":"21093.00"}    
]

Я пытался использовать

df.(orient = "records", date_format = "iso")

Но он получает значения следующим образом-

{"FortNight":"2018-04-29T00:00:00.000Z","AmountValue":21093.8,"Customer":10990}

Я пробовал и другие способы, но тщетно. Любая помощь приветствуется. Заранее спасибо !! ...

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

сначала вам нужно использовать set_index для столбца FortNight, а затем попробуйте это

b = dict(df.set_index('FortNight').groupby(level=0).apply(lambda  x : x.to_json(orient = 'records')))
print(b)
{'2018-04-29': '[{"AmountValue":339632.0,"Customer":10992},{"AmountValue":27282.0,"Customer":10994},{"AmountValue":26353.0,....
0 голосов
/ 05 июля 2018

Я уверен, что это не лучший (питонический) способ сделать это, но я думаю, что он даст желаемый результат

dict(df.groupby('FortNight').apply(lambda x: [{x.columns[1:].values[0] :y[0]} for y in x.values[:,1:]]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...