如何将含两列的Pandas DataFrame转为a→b映射的字典?
将Pandas DataFrame两列转换为键值对字典的最优方案
给定如下DataFrame:
import pandas as pd df = pd.DataFrame(data={'a':[1,3], 'b':[2,4]})
期望得到字典{1:2, 3:4},你当前用iterrows的字典推导虽然可行,但逐行遍历在大数据量下效率偏低,推荐以下两种更优方案:
方法1:设置索引后转字典(推荐)
通过将a列设为索引,直接提取b列并转换为字典,这是Pandas原生的高效实现:
result_dict = df.set_index('a')['b'].to_dict() print(result_dict) # 输出: {1: 2, 3: 4}
方法2:利用Python原生zip构造字典
如果偏好原生Python写法,可以用zip将两列打包为键值对,再转为字典:
result_dict = dict(zip(df['a'], df['b'])) print(result_dict) # 输出: {1: 2, 3: 4}
性能说明
- 原方法依赖
iterrows()逐行生成Series再提取值,大数据量下性能劣势明显。 - 上述两种方法均基于向量式操作(或原生高效迭代),执行速度远快于逐行遍历,当DataFrame行数超过万级时差异会非常显著。
内容的提问来源于stack exchange,提问作者9mjb
相关产品推荐
相关产品推荐

