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

如何在Pandas中转置指定DataFrame为样本×步骤格式?

Pandas中转置多层结构DataFrame的实现方法

现有如下Pandas DataFrame构建代码:

import pandas as pd

df = pd.DataFrame([[[1, 2, 3]], [[4, 5, 6]]], index=['step1', 'step2'], columns=['process'])

执行后得到初始DataFrame:

process
step1   [1, 2, 3]
step2   [4, 5, 6]

经过以下步骤处理:

df1 = df['process'].apply(pd.Series).rename(columns=lambda x: f'sp {x+1}')
out = pd.concat([df1], keys=['process'], axis=1)

得到out的结构为:

process
        sp 1    sp 2    sp 3
step1   1       2       3
step2   4       5       6

需要将其转置为**(sample×step)**的格式,目标结果如下:

process
      step1   step2    
sp 1    1       4
sp 2    2       5
sp 3    3       6

方法一:基于最终out直接处理

通过转置+索引层级调整即可实现目标格式:

# 转置DataFrame,交换列索引层级并排序
result = out.T.swaplevel(0, 1).sort_index()

代码解释:

  1. out.T:将原DataFrame转置,此时行索引变为原列的多层索引('process', 'sp 1')等,列变为原行索引step1、step2;
  2. swaplevel(0,1):交换行索引的两个层级,将sp x调整为外层行索引,process调整为内层;
  3. sort_index():对行索引进行排序,保证结构整齐。

方法二:在中间步骤df1直接处理

如果不需要保留out的结构,可以直接在生成df1后一步到位:

df1 = df['process'].apply(pd.Series).rename(columns=lambda x: f'sp {x+1}')
# 转置后添加列层级并调整
result = df1.T.rename_axis(index=None, columns='process').swaplevel(axis=1)

此方法更简洁,直接从df1生成目标格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:05:42