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

如何将DataFrame高效转换为以(行索引,列名)为键的字典

高效实现DataFrame转(行索引,列名)为键的字典

针对大数据量的场景,优先使用pandas内置的矢量化操作(避免手动循环,循环在数据量大时效率极低),以下是两种高效实现方案:

方法一:stack() + to_dict()(推荐,最简洁高效)

stack()会将列索引转换为多层索引的下层,生成的Series的索引恰好是(行索引, 列名)的元组,直接调用to_dict()即可完成转换:

import pandas as pd

df = pd.DataFrame({'col1': [1, 2], 'col2': [0.5, 0.75]}, index=['row1', 'row2'])

# 核心转换代码
result_dict = df.stack().to_dict()

print(result_dict)
# 输出:
# {('row1', 'col1'): 1, ('row1', 'col2'): 0.5, ('row2', 'col1'): 2, ('row2', 'col2'): 0.75}

方法二:melt() + set_index() + to_dict()

如果需要对行列做额外筛选或处理,可通过melt重塑数据后构建字典,效率同样优异:

import pandas as pd

df = pd.DataFrame({'col1': [1, 2], 'col2': [0.5, 0.75]}, index=['row1', 'row2'])

# 核心转换代码
melted_df = df.reset_index().melt(id_vars='index', var_name='col', value_name='val')
result_dict = melted_df.set_index(['index', 'col'])['val'].to_dict()

print(result_dict)
# 输出与方法一完全一致

效率说明

两种方法均基于pandas内部优化的矢量化逻辑,比Python原生循环快数倍至数十倍,尤其适配十万级以上的大数据量;其中方法一代码更简洁,执行效率略高于方法二。

内容的提问来源于stack exchange,提问作者qqzj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:40:37