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

如何用Pandas将同键多行数据合并为单行并添加对应列

解决方法

可以通过分组编号+宽表转换的方式实现,以下是具体步骤(基于pandas):

  1. 构造示例数据(或读取你的原始DataFrame)
import pandas as pd

df = pd.DataFrame({
    'key': ['A', 'A', 'A', 'B', 'B', 'B'],
    'variable1': ['x', 'x', 'x', 'x', 'x', 'x'],
    'variable2': [5, 6, 6, 5, 6, 6],
    'variable3': ['s', 't', 't', 's', 't', 't']
})
  1. 为每个key组内的行添加序号
# 每组内从0开始编号,区分同一key下的不同行
df['row_num'] = df.groupby('key').cumcount()
  1. 转换为宽表结构
# 将key和row_num设为索引,再展开列
wide_df = df.set_index(['key', 'row_num']).unstack()
  1. 重命名列名以匹配目标格式
# 重新生成列名:variable1→variable1/4/7,variable2→variable2/5/8,variable3→variable3/6/9
new_cols = []
for base_var in wide_df.columns.get_level_values(0).unique():
    var_idx = int(base_var.split('variable')[1])
    for row_idx in wide_df.columns.get_level_values(1).unique():
        new_cols.append(f'variable{var_idx + row_idx * 3}')

wide_df.columns = new_cols
  1. 重置索引得到最终结果
wide_df = wide_df.reset_index()

执行后wide_df的结构完全符合需求:

key variable1 variable2 variable3 variable4 variable5 variable6 variable7 variable8 variable9
0   A         x         5         s         x         6         t         x         6         t
1   B         x         5         s         x         6         t         x         6         t

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:40:43