Python 多维数组到dict

Python 多维数组到dict,python,python-3.x,numpy,dataframe,dictionary,Python,Python 3.x,Numpy,Dataframe,Dictionary,我试图将多维数组/数据帧转换为字典,但遇到了一些问题。我将excel文档作为数据框加载,并尝试以这种方式使用它。但是,如果有必要,我愿意使用numpy。不过,我的作业仅限于使用numpy或pandas 我尝试过使用pandasd.to_dict()方法,但似乎无法确定哪一种方法能带给我预期的结果。不幸的是,我不能使用mapdict或任何软件包 数据如下所示: Type Jan Feb 0 a 1 0 1 b 0 1 2 c 1 1 3 d

我试图将多维数组/数据帧转换为字典,但遇到了一些问题。我将excel文档作为数据框加载,并尝试以这种方式使用它。但是,如果有必要,我愿意使用numpy。不过,我的作业仅限于使用numpy或pandas

我尝试过使用pandas
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']}

你能给我们你的输入数据,但我想这是你需要的

df.to_dict(orient= 'index')

如果不是,可以给我们更多的信息

我不想在熊猫身上花太多时间,我不确定这是不是最好的答案,但你可以用compress来理解:

>>> 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']}]

如果还有额外的月份,你可以将它们添加到
月份
列表中。

我想有人编辑了我的帖子来向你展示输入。对不起,我不知道怎么做(第一次在这里发布!)