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

Python如何根据DataFrame索引元组提取对应行并横向拼接

pandas指定索引行对横向拼接实现方法

核心实现逻辑

  • 遍历给定的索引元组列表,逐个定位每个元组对应的两行原始数据
  • 给第一行所有字段名统一加_1后缀,第二行所有字段名统一加_2后缀
  • 将处理后缀后的两行做横向合并转为单行,所有元组处理完成后整合为最终的新DataFrame

可直接运行的代码示例

import pandas as pd

# 1. 构造原始样例DataFrame(共5行,字段与要求完全匹配)
df = pd.DataFrame(
    data=[
        [101, "Zhang", "San", "13xxxxxx01", "021-xxxx001"],
        [102, "Li", "Si", "13xxxxxx02", "021-xxxx002"],
        [103, "Wang", "Wu", "13xxxxxx03", "021-xxxx003"],
        [104, "Zhao", "Liu", "13xxxxxx04", "021-xxxx004"],
        [105, "Sun", "Qi", "13xxxxxx05", "021-xxxx005"]
    ],
    columns=["ID", "FIRST_NAME", "LAST_NAME", "MOBILE_NUMBER", "DIRECT_NUMBER"],
    index=[1,2,3,4,5]
)

# 2. 题目给定的索引对元组
index_pairs = [(1,3), (4,5)]

# 3. 执行拼接逻辑
result_rows = []
for idx_a, idx_b in index_pairs:
    # 取出对应行并为列名添加区分后缀
    row_part1 = df.loc[idx_a].add_suffix("_1")
    row_part2 = df.loc[idx_b].add_suffix("_2")
    # 横向拼接为单行存入结果列表
    merged_single_row = pd.concat([row_part1, row_part2]).to_frame().T
    result_rows.append(merged_single_row)

# 合并所有行得到最终结果
final_df = pd.concat(result_rows, ignore_index=True)

结果说明

最终输出的final_df列顺序固定为:
ID_1, FIRST_NAME_1, LAST_NAME_1, MOBILE_NUMBER_1, DIRECT_NUMBER_1, ID_2, FIRST_NAME_2, LAST_NAME_2, MOBILE_NUMBER_2, DIRECT_NUMBER_2
共2行数据,分别对应(1,3)、(4,5)两个索引对的拼接结果。

注意:如果原始DataFrame为自定义索引,需保证传入元组内的索引值和DataFrame实际索引完全匹配,否则会触发loc取值报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:36:23