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