如何将矩阵格式DataFrame归一化转换为三列结构DataFrame
Pandas 矩阵转三列长表实现方法
你要做的是邻接矩阵类宽表转为行-列-值结构的长表,直接用pandas内置的stack()方法即可实现,代码如下:
- 首先构造和你示例一致的原始DataFrame,将第一列作为行索引:
import pandas as pd # 原始矩阵数据 df = pd.DataFrame( data=[[1,2,3], [4,5,6], [7,8,9]], index=["A", "B", "C"], columns=["A", "B", "C"] ) df.index.name = "C0"
此时打印df输出和你给出的原始矩阵完全一致:
A B C C0 A 1 2 3 B 4 5 6 C 7 8 9
- 执行展开操作,重置索引后即可得到目标结构:
# 展开矩阵为长表格式 result = df.stack().reset_index() # 按需重命名列即可 result.columns = ["first_col", "second_col", "value"]
打印result得到的输出和你预期完全匹配:
first_col second_col value 0 A A 1 1 A B 2 2 A C 3 3 B A 4 4 B B 5 5 B C 6 6 C A 7 7 C B 8 8 C C 9
说明:
stack()会自动把所有列名旋转为二级行索引,对应的值和一级行索引(也就是你原始矩阵的行标签)一一配对,是pandas里处理这类矩阵转长表最高效的原生方法,不需要额外写循环遍历。
内容的提问来源于stack exchange,提问作者vlad
相关产品推荐
相关产品推荐

