在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
相关产品推荐
相关产品推荐

