如何将DataFrame转换为以(行索引,列名)元组为键的字典?
将DataFrame转换为以(行索引, 列名)为键的字典
方法一:使用stack() + to_dict()(推荐,效率更高)
这是Pandas内置的向量化操作,适配大多数场景,尤其适合大数据集。
- 构造示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6] }, index=['x', 'y', 'z'])
- 执行转换:
result_dict = df.stack().to_dict()
转换后的结果:
{('x', 'A'): 1, ('x', 'B'): 4, ('y', 'A'): 2, ('y', 'B'): 5, ('z', 'A'): 3, ('z', 'B'): 6}
原理:stack()会把DataFrame的列标签转换为行索引的二级层级,生成的Series索引就是(行索引, 列名)的元组,调用to_dict()即可直接得到目标字典。
方法二:逐行遍历(直观易懂)
如果需要自定义处理逻辑,或对Pandas内置方法不熟悉,可采用逐行遍历的方式:
result_dict = {} # 遍历每一行的索引与行数据 for idx, row in df.iterrows(): # 遍历每一列的列名 for col in df.columns: result_dict[(idx, col)] = row[col]
这种方法逻辑清晰,但对大型DataFrame来说,效率不如stack()方法。
内容的提问来源于stack exchange,提问作者Majed elmohands
相关产品推荐
相关产品推荐

