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

Python中如何将DataFrame分类行转列 按位置聚合各节点信号强度

实现思路

每个节点同一位置下有4条有序记录,我们先给NODE + LOCATION的分组内添加顺序编号,再通过透视表转成宽表即可完全保留原有顺序。

完整代码

import pandas as pd

# 1. 给同节点同位置的记录按原顺序添加编号
df['group_seq'] = df.groupby(['NODE', 'LOCATION']).cumcount()

# 2. 透视转换为宽表
wide_df = df.pivot(
    index=['LOCATION', 'group_seq'],
    columns='NODE',
    values='SIGNAL-STRENGTH'
).reset_index()

# 3. 重命名列、调整输出格式
wide_df.columns = ['LOCATION', 'group_seq', 'NODEA_SIGNAL', 'NODE_B_SIGNAL', 'NODE_C_SIGNAL', 'NODE_D_SIGNAL', 'NODE_E_SIGNAL']
final_df = wide_df.drop('group_seq', axis=1).reset_index(drop=True)

逻辑说明

  • groupby.cumcount()不会打乱原数据顺序,刚好给每个位置下同一节点的4条记录生成0-3的序号,保证后续拼接顺序和原始数据完全一致
  • 透视表使用LOCATION + group_seq作为联合索引,最终生成的行数刚好是5个位置×每个位置4条=20行,完全符合需求
  • 如果节点数量不固定,可通过遍历wide_df.columns批量生成列名,不用手动写死

内容的提问来源于stack exchange,提问作者GV-9wj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:39:04