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

如何在groupby后转置DataFrame,实现按port分组结构转换?

实现方法

可以用Pandas的分组和表格重塑功能快速实现需求,具体步骤如下:

1. 构造原始数据

先还原你提供的初始DataFrame:

import pandas as pd

data = {
    'port': [1,2,3,4,1,2,3,4],
    'valueA': [3.1,3.09,3.09,3.11,3.1,3.1,3.08,3.09],
    'valueB': [58.2,58.3,58.15,58.2,58.25,58.25,58.15,58.1],
    'valueC': [0.09,0.1,0.09,0.1,0.09,0.09,0.09,0.09]
}
df = pd.DataFrame(data)

2. 生成组内序号

按port分组后,给每个组内的行分配唯一序号,用来作为重塑后的行索引:

df['row_idx'] = df.groupby('port').cumcount()

3. 重塑表格结构

用pivot方法完成行列转换:将组内序号作为行、port值作为列、valueA作为单元格值:

result_df = df.pivot(index='row_idx', columns='port', values='valueA').reset_index(drop=True)
# 把列名转为字符串格式(可选,消除默认的列名前缀)
result_df.columns = result_df.columns.astype(str)

执行后得到的result_df就是你需要的结构:

1234
3.13.093.093.11
3.13.13.083.09

简化写法

也可以用groupby结合unstack一步完成:

result_df = df.groupby('port')['valueA'].apply(pd.Series)

内容的提问来源于stack exchange,提问作者RedSmolf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:42:51