Skip to main content
 首页 » 编程设计

python之通过将列值映射到标题在 Pandas 中创建字典

2025年05月04日10zengkefu

我有以下数据框:

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