如何使用Python的Pandas从Excel数据生成嵌套字典
如何用Pandas将Excel数据转换为指定结构的嵌套字典?
需求目标
需要将Excel表格数据转换为如下结构的嵌套字典:
dict_mainmenu_items = { "id": {"lbl101":"file", "lbl102":"accounts", "lbl103":"inventory", "lbl104":"manufacture"}, "english": {"lbl101":"File", "lbl102":"Accounts", "lbl103":"Inventory", "lbl104":"Manufacture"}, "tamil": {"lbl101":"tamil_file", "lbl102":"tamil_accounts", "lbl103":"tamil_inventory", "lbl104":"tamil_manu"}, "hindi": {"lbl101":"hindi_file", "lbl102":"hindi_accounts", "lbl103":"hindi_inventory", "lbl104":"hindi_manuf"} }
现有尝试代码
使用Pandas读取Excel并转换字典的代码如下:
import pandas as pd file_path = r'C:/Users/Asus/Desktop/Documents/pyhton_dict_example.xlsx' df = pd.read_excel(file_path) df.set_index('lbl_name',inplace=True) print(df.to_dict(orient='index'))
当前输出结果
运行上述代码后得到的字典结构与需求不符,输出为:
{ 'lbl101': {'id': 'file', 'english': 'File', 'tamil': 'tamil_file', 'hindi': 'Hindi_File'}, 'lbl102': {'id': 'accounts', 'english': 'Accounts', 'tamil': 'tamil_accounts', 'hindi': 'Hindi_Accounts'}, 'lbl103': {'id': 'inventory', 'english': 'Inventory', 'tamil': 'tamil_inventory', 'hindi': 'Hindi_Inventory'}, 'lbl104': {'id': 'manufacture', 'english': 'Manufacture', 'tamil': 'tamil_manuf', 'hindi': 'Hindi_Manufacture'} }
Excel表格数据
原始Excel表格内容如下:
| lbl_name | id | english | tamil | hindi |
|---|---|---|---|---|
| lbl101 | file | File | tamil_file | hindi_file |
| lbl102 | accounts | Accounts | tamil_accounts | hindi_accounts |
| lbl103 | inventory | Inventory | tamil_inventory | hindi_inventory |
| lbl104 | manufacture | Manufacture | tamil_manufact | hindi_manu |
解决方案
问题出在orient='index'的使用逻辑上:它会将行索引(lbl_name)作为外层字典的键,而我们需要把列名(id、english等)作为外层键。只需先对DataFrame进行转置,再转换为字典即可得到目标结构,调整后的代码如下:
import pandas as pd file_path = r'C:/Users/Asus/Desktop/Documents/pyhton_dict_example.xlsx' df = pd.read_excel(file_path) df.set_index('lbl_name', inplace=True) # 转置DataFrame后生成目标结构字典 dict_mainmenu_items = df.T.to_dict(orient='index') print(dict_mainmenu_items)
运行这段代码后,就能得到与需求完全一致的嵌套字典结构。
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

