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

如何按行交替合并Pandas DataFrame中的成对列

按交替顺序生成目标DataFrame的解决方案

问题背景

现有如下Pandas DataFrame:

import pandas as pd
import numpy as np  # 后续方案需用到
df = pd.DataFrame({'home_id':   ['1', '3', '5', '7'],
                   'home_name': ['A', 'C', 'E', 'G'],
                   'away_id':   ['2', '4', '6', '8'],
                   'away_name': ['B', 'D', 'F', 'H']})

需要生成按第一行home列→第一行away列→第二行home列→第二行away列交替顺序的目标结构:

id name
1    A
2    B
3    C
4    D
5    E
6    F
7    G
8    H

此前用pd.concat合并后按索引排序的方法,在存在重复索引时易出错,因此需要更可靠的交替取值方案。

高效解决方案:利用numpy数组重塑

直接通过numpy的数组拼接与重塑操作,无需依赖索引排序,完美实现交替顺序:

# 将每行的home数据与away数据横向配对,再重塑为2列结构
data = np.column_stack([df[['home_id', 'home_name']].values, 
                        df[['away_id', 'away_name']].values]).reshape(-1, 2)
# 转换为目标DataFrame
result_df = pd.DataFrame(data, columns=['id', 'name'])

方案说明

  1. np.column_stack将每行的(home_id, home_name)和(away_id, away_name)横向拼接,得到形状为(4,4)的数组(4行,每行包含home_id、home_name、away_id、away_name)
  2. reshape(-1,2)将数组自动展平并重塑为2列结构,最终得到8行2列的数组,正好对应home→away的交替顺序
  3. 最后将数组转为DataFrame并指定列名即可

验证结果

运行上述代码后,result_df的输出完全符合目标结构:

id name
0  1    A
1  2    B
2  3    C
3  4    D
4  5    E
5  6    F
6  7    G
7  8    H

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:11:20