Многомерный массив для диктовки - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь преобразовать многомерный массив / фрейм данных в словарь и у меня возникли некоторые проблемы. Я загрузил документ Excel в качестве фрейма данных и пытаюсь работать с ним таким образом. Тем не менее, я открыт для использования NumPy в случае необходимости. Я ограничен использованием только numpy или панд для моего задания.

Я пытался использовать методы панд d.to_dict(), но не могу понять, какой из них принес бы мне ожидаемый результат. Я не могу использовать mapdict или какие-либо пакеты, к сожалению.

Данные выглядят так:

  Type Jan Feb
0    a   1   0
1    b   0   1
2    c   1   1
3    d   1   0

Требуемый соответствующий вывод будет словарь, как:

{'A' : ['Jan'], 'B' : ['Feb'], 'C' : ['Jan', 'Feb'], 'D' : ['Jan']}

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Можете ли вы дать нам свои входные данные, но я думаю, это то, что вам нужно.

df.to_dict(orient= 'index')

если не можете, дайте нам больше информации ...

0 голосов
/ 08 октября 2019

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

>>> from itertools import compress
>>> import pandas as pd
>>> df = pd.DataFrame(data=[['a',1,0],['b',0,1],['c',1,1],['d',1,0]],columns=['type','jan','feb'])
>>> df.head()
type  jan  feb
0    a    1    0
1    b    0    1
2    c    1    1
3    d    1    0
>>> months = ['jan','feb']
>>> [{df.loc[key]['type']: list(compress(months, [v for v in df.loc[key, months]]))} for key in df.index]
[{'a': ['jan']}, {'b': ['feb']}, {'c': ['jan', 'feb']}, {'d': ['jan']}]

Если есть дополнительные месяцы, вы могли быдобавьте их в список months.

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