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

请求提供行转列(data transpose)实现代码:特定规则数据转置需求

行转列(Data Transpose)实现代码

原始数据与目标效果说明

原始数据样例:

列1列2
A1
2
3
B4
5
C6

目标效果:

列1列2_1列2_2列2_3
A123
B45
C6

Python(Pandas)实现代码

import pandas as pd

# 构造原始数据(可替换为实际数据读取逻辑,比如pd.read_excel/pd.read_csv)
data = {
    '列1': ['A', '', '', 'B', '', 'C'],
    '列2': [1, 2, 3, 4, 5, 6]
}
df = pd.DataFrame(data)

# 用前一个非空值填充列1的空值,生成分组标识
df['分组键'] = df['列1'].replace('', pd.NA).ffill()

# 分组后将列2数据转置为多列
transposed_df = df.groupby('分组键')['列2'].apply(lambda x: pd.Series(x.values)).unstack()

# 重命名列并调整结构
transposed_df.columns = [f'列2_{idx+1}' for idx in transposed_df.columns]
transposed_df = transposed_df.reset_index().rename(columns={'分组键': '列1'})

# 将空值替换为空字符串(可选,根据展示需求调整)
transposed_df = transposed_df.fillna('')

print(transposed_df)

代码说明

  • 分组标识生成:通过ffill()方法将列1的连续空值填充为前一个非空值,把同属一个主项的行归为一组
  • 行转列操作:利用groupby分组后,将每个组的列2数据转为Series,再通过unstack()实现行转列
  • 格式调整:重命名列名、重置索引,最后可选将空值替换为空字符串,让输出更贴合目标效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:34:58