本文介绍如何将包含两列的 dataframe 快速、简洁地转换为以第一列为键、第二列为值的 python 字典,推荐使用 `set_index().to_dict()` 组合方法,避免低效迭代。
在 Pandas 数据处理中,常需将二维表格结构(如两列)映射为键值对字典——例如将 ID 列作为键、标签列作为值,用于快速查找或构建配置映射。直接调用 DataFrame.to_dict() 默认返回列名 → 列数据的嵌套字典,无法满足 colA → colB 的扁平映射需求;而使用 iterrows() 配合字典推导式虽可行,但性能较差(涉及 Python 层循环,且 iterrows() 会构造 Series 对象,开销大)。
推荐方案:df.set_index('a')['b'].to_dict() 或等价写法 df.set_index('a').to_dict()['b']
import pandas as pd
df = pd.DataFrame(data={'a': [1, 3], 'b': [2, 4]})
result = df.set_index('a')['b'].to_dict()
print(result) # {1: 2, 3: 4}✅ 优势说明:
⚠️ 注意事项:
补充技巧:
若需反向映射(b → a),只需交换列名:df.set_index('b')['a'].to_dict();
若列名未知,可用位置索引:df.set_index(df.columns[0])[df.columns[1]].to_dict()。
总之,set_index + [] +
to_dict 是兼顾可读性、性能与 Pandas 惯例的最佳实践。