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

