从数据框中创建列的字典(包含部分)

时间:2019-11-04 13:34:35

标签: pandas dataframe dictionary

我有一个带有调查详细信息的数据框。下面是这些列的简要摘录:

`['Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q9', 'Q10', 'Q12_MULTIPLE_CHOICE', 
'Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4', 'Q13_Part_5', 
'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8', 'Q13_Part_9', 'Q13_Part_10', 
'Q13_Part_11', 'Q13_Part_12', 'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15', 
'Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4', 'Q15_Part_5', 
'Q15_Part_6', 'Q15_Part_7']`

我想创建一个包含“带有零件的问题”的字典,也就是说,字典的键将是问题编号,而值将是零件的列表。

例如:

mydict= {
     'Q13': ['Q13_Part_1', 'Q13_Part_2',... ],
     'Q15': ['Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4', 
     'Q15_Part_5', 'Q15_Part_6', 'Q15_Part_7'],
      ..
    }

我该如何处理?

1 个答案:

答案 0 :(得分:0)

使用defaultdict作为存储值:

L = ['Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q9', 'Q10', 'Q12_MULTIPLE_CHOICE', 
'Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4', 'Q13_Part_5', 
'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8', 'Q13_Part_9', 'Q13_Part_10', 
'Q13_Part_11', 'Q13_Part_12', 'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15', 
'Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4', 'Q15_Part_5', 
'Q15_Part_6', 'Q15_Part_7']


from collections import defaultdict

d = defaultdict(list)
for x in L:
    if '_' in x:
        d[x.split('_')[0]].append(x)
print (d)


defaultdict(<class 'list'>, {'Q12': ['Q12_MULTIPLE_CHOICE'], 
                             'Q13': ['Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4', 
                                     'Q13_Part_5', 'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8',
                                     'Q13_Part_9', 'Q13_Part_10', 'Q13_Part_11', 'Q13_Part_12',
                                     'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15'], 
                             'Q15': ['Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3', 'Q15_Part_4',
                                     'Q15_Part_5', 'Q15_Part_6', 'Q15_Part_7']})

print (dict(d))

{'Q12': ['Q12_MULTIPLE_CHOICE'], 
 'Q13': ['Q13_Part_1', 'Q13_Part_2', 'Q13_Part_3', 'Q13_Part_4', 
         'Q13_Part_5', 'Q13_Part_6', 'Q13_Part_7', 'Q13_Part_8', 
         'Q13_Part_9', 'Q13_Part_10', 'Q13_Part_11', 'Q13_Part_12',
         'Q13_Part_13', 'Q13_Part_14', 'Q13_Part_15'],
 'Q15': ['Q15_Part_1', 'Q15_Part_2', 'Q15_Part_3',
         'Q15_Part_4', 'Q15_Part_5', 'Q15_Part_6', 'Q15_Part_7']}