如何将键为(i,j)元组的矩阵式字典转换为指定结构的Pandas DataFrame
解决方案:将元组键字典转换为指定格式的Pandas DataFrame
步骤说明
- 从字典中分离出行名、列名与核心数据
- 按顺序整理数据后构造目标DataFrame
代码实现
以你提供的示例字典为例:
import pandas as pd matrix_dict = { (0, 0): 'RowIndex\\ColumnIndex', (0, 1): 'Column1', (0, 2): 'Column2', (1, 0): 'Row1', (1, 1): 1, (1, 2): 2, (2, 0): 'Row2', (2, 1): 3, (2, 2): 4 } # 1. 提取行名:筛选(i,0)且i≥1的项,按i排序 row_names = [v for k, v in sorted(matrix_dict.items()) if k[1] == 0 and k[0] > 0] # 2. 提取列名:筛选(0,j)且j≥1的项,按j排序 col_names = [v for k, v in sorted(matrix_dict.items()) if k[0] == 0 and k[1] > 0] # 3. 提取数据:按行号顺序,提取每行对应的列数据 data_rows = [] for i in range(1, len(row_names)+1): row_data = [matrix_dict[(i, j)] for j in range(1, len(col_names)+1)] data_rows.append(row_data) # 4. 构造最终DataFrame df = pd.DataFrame(data_rows, index=row_names, columns=col_names) print(df)
输出结果
Column1 Column2 Row1 1 2 Row2 3 4
通用适配说明
如果你的字典包含更多行列,这段代码无需修改即可适配:
row_names会自动按i从小到大提取所有(i,0)对应的行名col_names会自动按j从小到大提取所有(0,j)对应的列名data_rows会按行号顺序,依次提取每行的所有列数据
内容的提问来源于stack exchange,提问作者work flow
相关产品推荐
相关产品推荐

