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

合并后移除右侧DataFrame键列并优化列名的优雅实现

Pandas合并后自动去右侧键列+规范列名的简洁方法

给你两种贴合需求的简洁实现方式:

一、实现「较好」的列名:id、user_id、name

利用合并时的suffixes参数标记重复列,再批量删除右侧的键列,不用手动指定列名:

import pandas as pd

users = pd.DataFrame({"id": [1,2,3], "name": ["Mark", "Elon", "Jeff"]})
orders = pd.DataFrame({"id": [1,2,3,4,5,6], "user_id": [2,3,2,1,1,3]})

# 合并时给右侧重复列加后缀_y,左侧保留原列名
orders_full = pd.merge(left=orders, right=users, how="left", left_on="user_id", right_on="id", suffixes=('', '_y'))
# 批量删除所有带_y后缀的右侧键列
orders_full = orders_full.drop(columns=[col for col in orders_full.columns if col.endswith('_y')])

二、实现「更优」的列名:order_id、user_id、user_name

提前给表的列名做规范,从根源避免重复列,合并后直接得到目标结构:

import pandas as pd

users = pd.DataFrame({"id": [1,2,3], "name": ["Mark", "Elon", "Jeff"]})
orders = pd.DataFrame({"id": [1,2,3,4,5,6], "user_id": [2,3,2,1,1,3]})

# 提前规范列名,消除歧义
users = users.rename(columns={"id": "user_id", "name": "user_name"})
orders = orders.rename(columns={"id": "order_id"})

# 直接按user_id合并,无需后续处理
orders_full = pd.merge(left=orders, right=users, how="left", on="user_id")

两种方法都不用手动逐个删改列,第一种适合快速处理、保留原有核心列名的场景;第二种通过提前规范命名,让数据结构更清晰,后期维护更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:58:34