我有2列(列名Orig_Nm和Mapping)数据帧:
原始名称映射
名称FinalName
Id_No身份标识
组区域
现在我希望将其转换为字典,所以我使用
name_dict = df.set_index('Orig_Nm').to_dict()
print (name_dict)
我得到的输出是:
{'Mapping': {'Group': 'Zone', 'ID_No': 'Identification', 'Name': 'Final_Name'}}
因此它是字典{{}}
中的字典。
我做错了什么,我没有一本字典,即{}
答案 0 :(得分:1)
通过为Mapping
选择Series
列,您需要Series.to_dict
而不是DataFrame.to_dict
:
name_dict = df.set_index('Orig_Nm')['Mapping'].to_dict()
还可以通过键进行选择:
name_dict = df.set_index('Orig_Nm').to_dict()['Mapping']
编辑:
您的解决方案是在set_index
创建了一个列DataFrame
之后,因此函数to_dict
创建了嵌套字典-第一个键是列名称:
d = {'Orig_Nm': ['Group', 'ID_No', 'Name'],
'Mapping': ['Zone', 'Identification', 'Final_Name']}
df = pd.DataFrame(d)
print (df)
Orig_Nm Mapping
0 Group Zone
1 ID_No Identification
2 Name Final_Name
print (df.set_index('Orig_Nm'))
Mapping
Orig_Nm
Group Zone
ID_No Identification
Name Final_Name
print (type(df.set_index('Orig_Nm')))
<class 'pandas.core.frame.DataFrame'>
因此,为避免这种情况,有必要在Series
中选择此列:
print (df.set_index('Orig_Nm')['Mapping'])
Orig_Nm
Group Zone
ID_No Identification
Name Final_Name
Name: Mapping, dtype: object
print (type(df.set_index('Orig_Nm')['Mapping']))
<class 'pandas.core.series.Series'>