我有以下数据框:
F1:
head drowsiness sweat
head_P D_P sw_f
head_S D-H sw_h
head_F D_L sw_l
我需要通过将列中的所有值映射到列标题来创建一个字典,如下所示:
Dic = {head_p:head, head_S: head, head_F: head, D_P: drowsiness, D-H:drowsiness , D_L: drowsiness, sw_f: sweat, sw_h: sweat , sw_l: sweat }
我创建了每列的列表并将其映射到标题,但我不知道如何创建这样的字典。谢谢!
请您参考如下方法:
melt + set_index + to_dict:
df
head drowsiness sweat
0 head_P D_P sw_f
1 head_S D-H sw_h
2 head_F D_L sw_l
df.melt().set_index('value').to_dict()['variable']
{'D-H': 'drowsiness',
'D_L': 'drowsiness',
'D_P': 'drowsiness',
'head_F': 'head',
'head_P': 'head',
'head_S': 'head',
'sw_f': 'sweat',
'sw_h': 'sweat',
'sw_l': 'sweat'}
如果出现此错误:
AttributeError: 'DataFrame' object has no attribute 'melt
这意味着您使用的是旧版本的 pandas (<0.20),因此请改用 pd.melt:
pd.melt(df).set_index('value').to_dict()['variable']
