pandas实现除首列外的相邻列两两拼接(双列连接)
Pandas实现相邻列两两拼接操作
核心实现逻辑
操作全程不改动第一列原始内容,将剩余列按从左到右的顺序,每两个相邻列归为一组,逐行完成字符串拼接,最后将拼接后的列与保留的第一列合并为最终结果。
具体代码实现
- 拆分原始数据
将DataFrame拆分为需原样保留的首列、待拼接的剩余序列列两个独立部分:import pandas as pd # 保留第一列所有原始内容 keep_first_col = df.iloc[:, [0]] # 提取剩余需要处理的列 process_cols = df.iloc[:, 1:] - 逐组完成相邻列拼接
以2为步长遍历待处理列,每取到两个相邻列就按行执行字符串连接,收集所有拼接完成的列:combined_columns = [] for start_pos in range(0, process_cols.shape[1], 2): # 显式转字符串避免数值类型运算干扰 new_col = process_cols.iloc[:, start_pos].astype(str) + process_cols.iloc[:, start_pos+1].astype(str) combined_columns.append(new_col) # 将所有拼接后的列组合为新的DataFrame combined_df = pd.concat(combined_columns, axis=1) - 合并得到最终结果
将最初保留的首列与拼接完成的列对齐合并,重置索引避免错位:final_df = pd.concat([ keep_first_col.reset_index(drop=True), combined_df.reset_index(drop=True) ], axis=1)
运行效果
使用题干给出的测试数据运行上述代码,输出结果完全匹配目标格式:
ADP_4 GG GC GG GG GA ADP_5 GG GA GG GG GA ADP_3 GG GC GG GG GA
边界情况处理
- 若待处理的列数为奇数,可在循环末尾增加判断逻辑,将最后无法凑对的单列直接加入结果,避免索引越界报错
- 拼接前强制转换为字符串类型,可避免列存储为数值类型时,拼接操作变成算术加法的问题
内容的提问来源于stack exchange,提问作者Siavash
相关产品推荐
相关产品推荐

