преобразуйте фрейм данных в dict, используя имя столбца в качестве ключа и другие столбцы, такие как k, v — python, панды, фрейм данных

#python #pandas #dataframe

Вопрос:

Заранее благодарю всех за помощь.

У меня есть фрейм данных, подобный этому:

идентификатор клиента product_id имя продукта временная метка_составлена product_constraint
азбука fi2k луг 2021 нулевой
азбука fi2j февраль 2021 нулевой
азбука фкн розенкранц 2021 скн
кбр 01x получить 2021 лок
кбр 018 los 2021 hnc
кбр 018 внг 2021 hnc

Мне нужно сделать диктант этого df. Пожалуйста, обратите внимание, что client_id не уникален, идентификатор клиента события как pk и идентификатор продукта не уникален. Просто комбинация client_id, product_id и product_constraint (которая в некоторых случаях может быть равна нулю) создает идеальный уникальный идентификатор.

Мой диктант должен быть таким:

 {  "abc":[  {  "product_id":"fi2k",  "product_name": "loug",  "timestamp_added": 2021,  "product_constraint": null  },  {  "product_id":"fi2j",  "product_name": "feb",  "timestamp_added": 2021,  "product_constraint": null  },  {  ...  }  ],  "cbd":[  {  ...  },  {  ...  },  {  ...  }  ] }  

После этого я буду использовать этот диктант для вставки данных в dynamodb.

Ответ №1:

попробуйте это:

 from pprint import pprint  outdict = {} # create output dictionary   df = df.set_index('client_id') # set index and group  dfg = df.groupby(df.index)   #iterate through groups populating the dictionary  for grp in dfg.groups:  g = dfg.get_group(grp)  # print(g.to_dict('records'))  outdict[grp] = g.to_dict('records')   pprint(outdict)  {'abc': [{'product_constraint': nan,  'product_id': 'fi2k',  'product_name': 'loug',  'timestamp_added': 2021},  {'product_constraint': nan,  'product_id': 'fi2j',  'product_name': 'feb',  'timestamp_added': 2021},  {'product_constraint': 'skn',  'product_id': 'fkn',  'product_name': 'ros',  'timestamp_added': 2021}],  'cbd': [{'product_constraint': 'lok',  'product_id': '01x',  'product_name': 'get',  'timestamp_added': 2021},  {'product_constraint': 'hnc',  'product_id': '018',  'product_name': 'los',  'timestamp_added': 2021},  {'product_constraint': 'hnc',  'product_id': '018',  'product_name': 'vng',  'timestamp_added': 2021}]}