Pandas 从数据帧创建列(含部分)字典

Pandas 从数据帧创建列(含部分)字典,pandas,dataframe,dictionary,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'

我有一个带有调查细节的数据框架。以下是各专栏的简要摘录:

`['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']`
我想创建一个包含“带部件的问题”的字典,也就是说,字典的键将是问题编号,值b将是部件列表

例如:

如何实现此目的?

用于存储值:

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']})
用于存储值:

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