如何使用Pandas聚合行格式DataFrame数据并转换为二维矩阵
Pandas长表转二维矩阵实现方法
你需要的行存储格式转二维交叉矩阵的操作,不需要手动写循环逐行填充,直接用Pandas内置的长宽表转换方法就能高效实现。
具体实现步骤
- 先处理原始数据的重名列问题:你的示例数据里第一列和第三列都命名为
residue,会导致后续方法调用报错,先给三列设置区分度的列名:
# 三列依次对应:行索引值(残基编号)、列名(氨基酸类型)、单元格填充值 df.columns = ["residue_pos", "aa", "value"]
- 调用
pivot方法完成格式转换:
matrix_df = df.pivot(index="residue_pos", columns="aa", values="value")
执行后得到的matrix_df就是你需要的二维矩阵格式:行索引为L37、L38这类残基编号,列名为N、A、M、R这类氨基酸单字母,单元格对应匹配的数值。
特殊情况处理
如果你的原始数据中存在同一个残基位置+同一个氨基酸对应多条数值记录的情况,直接用pivot会触发报错,这时候可以替换为pivot_table方法,自定义重复值的聚合规则:
# 示例:重复值取第一条记录,也可以根据需求替换为sum(求和)、mean(求均值)等聚合函数 matrix_df = df.pivot_table( index="residue_pos", columns="aa", values="value", aggfunc="first" )
内容的提问来源于stack exchange,提问作者Brett
相关产品推荐
相关产品推荐

