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

在R语言中如何堆叠重复列?将A/B重复列分别合并为单列

高效重塑DataFrame:合并重复列分组

现有如下结构的DataFrame:

| A_replicate_1 | A_replicate_2 | B_replicate_1 | B_replicate_2 |

需要将其转换为:

|       A       |       B       | 

即把A的两个重复列堆叠为一列A,B的两个重复列堆叠为一列B,之前尝试堆叠后还要筛选多余列,代码太繁琐,求简洁实现方式。

两种简洁实现方法

方法一:melt + pivot组合操作

先把宽表转成包含分组信息的长表,再重组回目标宽表,全程不用额外筛选多余列:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'A_replicate_1': [1, 2, 3],
    'A_replicate_2': [4, 5, 6],
    'B_replicate_1': [7, 8, 9],
    'B_replicate_2': [10, 11, 12]
})

# 拆分列名,提取分组(A/B)和重复项标识
df_melted = df.melt(var_name='group_replicate', value_name='value')
df_melted[['group', 'replicate']] = df_melted['group_replicate'].str.split('_replicate_', expand=True)

# 重组为目标格式
result = df_melted.pivot(index='replicate', columns='group', values='value').reset_index(drop=True)
result.columns.name = None

方法二:用wide_to_long一步到位

pandas内置的wide_to_long专门处理这种带重复后缀的宽表,代码更精简:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'A_replicate_1': [1, 2, 3],
    'A_replicate_2': [4, 5, 6],
    'B_replicate_1': [7, 8, 9],
    'B_replicate_2': [10, 11, 12]
})

# 添加临时索引后直接转换
df = df.reset_index()
result = pd.wide_to_long(df, stubnames=['A', 'B'], i='index', j='replicate', sep='_replicate_').reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:31