You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel的ISIN与URL列生成无嵌套层级的字典?

解决Pandas Excel转字典时去除额外层级的问题

问题场景

你有一个Excel表格,表头为ISIN和URL,数据如下:

ISINURL
ISIN1https://mylink3.pdf
ISIN2https://mylink2.pdf

你尝试用以下代码将表格转换为字典:

import pandas as pd
my_dic = pd.read_excel('PDFDwn.xlsx', index_col=0).to_dict()
print(my_dic)

得到的输出却多了一层URL的嵌套:

{'URL': {'ISIN1': 'https://mylink3.pdf', 'ISIN2': 'https://mylink2.pdf'}}

但你期望的是直接以ISIN为键、对应URL为值的扁平字典:

{'ISIN1': 'https://mylink3.pdf', 'ISIN2': 'https://mylink2.pdf'}

两种简单的修改方案

方案一:直接提取目标列转字典

最直观的方式是先选中URL列,再调用to_dict(),这样会自动把你设置为索引的ISIN列作为键:

import pandas as pd
# 读取表格并指定ISIN为索引
df = pd.read_excel('PDFDwn.xlsx', index_col=0)
# 提取URL列转换为目标格式字典
my_dic = df['URL'].to_dict()
print(my_dic)

也可以写成更简洁的一行:

import pandas as pd
my_dic = pd.read_excel('PDFDwn.xlsx', index_col=0)['URL'].to_dict()

方案二:从现有嵌套字典中提取目标层级

如果不想改动读取逻辑,直接从你当前得到的嵌套字典中取出URL对应的子字典即可:

import pandas as pd
my_dic = pd.read_excel('PDFDwn.xlsx', index_col=0).to_dict()['URL']
print(my_dic)

原理小说明

当你直接调用df.to_dict()时,默认的orient参数是'dict',会生成以列名为外层键、行索引和列值为内层键值对的嵌套结构。而当你单独选中某一列(比如df['URL'])再转字典,就会把该列的索引(也就是你设置的ISIN)作为键,列值作为对应的值,正好匹配你想要的格式。

内容的提问来源于stack exchange,提问作者Shashi Shankar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:55:40