Конвертируйте два кадра данных Pandas в словарь кортежей для каждой группы - PullRequest
0 голосов
/ 24 января 2019

В настоящее время у меня есть два DataFrames с именами «means» и «variances», каждый из которых сгруппирован по классу, как показано.

означает DataFrame:

         Pregnancies     Glucose     BP
Class                
0        4.00            99.8        56.0
1        4.75            130         62.5

дисперсии DataFrame:

         Pregnancies     Glucose     BP
Class                
0        9.10            698         326
1        14.1            1023        463

Я хотел бы вернуть словарь из двух пар ключ-значение с ключами, равными номерам классов, и значениями в виде кортежей, содержащих среднее значение и значения дисперсии для каждого объекта в кадрах данных, как показано здесь:

dict = {0:[(4.00, 9.10), (99.8, 698), (56.0, 326)],
        1:[(4.75, 14.1), (130, 1023), (62.6, 463)]}

Все еще работаю над своими навыками манипулирования данными. Для справки, это часть построения наивного байесовского классификатора с нуля. Мне нетрудно понять теорию наивной байесовской классификации, часть, с которой я, очевидно, борюсь, - это правильное форматирование моих данных.

1 Ответ

0 голосов
/ 24 января 2019

Один из способов - объединить ваши фреймы данных, а затем использовать groupby + apply:

res = pd.concat([means, variances])\
        .groupby(level=0).apply(lambda x: list(map(tuple, x.values.T))).to_dict()

print(res)

{0: [(4.0, 9.1), (99.8, 698.0), (56.0, 326.0)],
 1: [(4.75, 14.1), (130.0, 1023.0), (62.5, 463.0)]}

Если списка списков достаточно, более читаемым будет lambda x: x.values.T.tolist().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...