如何在Pandas DataFrame中复制并重命名指定列?
简洁实现Pandas列映射与重命名方案
针对你的需求,无需循环遍历或手动删除列,用Pandas原生方法可以直接构造目标DataFrame,以下是两种简洁方案:
方案一:字典构造+assign追加列
直接通过字典生成映射后的列,再用assign保留values列:
table_name = 'table_1' mapping = mapping_dict[table_name] # 生成映射后的列字典(自动处理同一原列映射多个新列的情况) mapped_columns = {new_col: df[old_col] for new_col, old_col in mapping.items()} # 构造新DataFrame并追加values列 new_df = pd.DataFrame(mapped_columns).assign(values=df['values'])
方案二:pd.concat批量重命名拼接
用列表推导式生成重命名后的Series,再通过pd.concat拼接所有列:
table_name = 'table_1' mapping = mapping_dict[table_name] new_df = pd.concat( # 遍历映射生成重命名后的Series [df[col].rename(new_col) for new_col, col in mapping.items()] # 追加原values列 + [df['values']], axis=1 )
方案优势
- 无需复制整个原DataFrame,仅按需提取需要的列,内存效率更高
- 天然支持同一原列映射多个新列的场景(如
dt_start和dt_end都映射自B) - 代码更紧凑,完全基于Pandas原生向量化操作逻辑,可读性更强
运行以上代码后,new_df将完全符合你给出的预期输出,针对table_2只需替换table_name参数即可复用。
内容的提问来源于stack exchange,提问作者Ralubrusto
相关产品推荐
相关产品推荐

