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

如何修改DataFrame列表中的指定列名并全连接所有DataFrame

解决多DataFrame重命名指定列并全连接的问题

假设你用的是Python的pandas库(这是处理DataFrame最常用的工具),我来一步步帮你实现需求:

1. 先准备示例数据(方便你对照)

首先我造几个和你场景匹配的示例DataFrame,每个都有相同的列名:

import pandas as pd
from functools import reduce

# 创建3个列名相同的示例DataFrame
df_sales = pd.DataFrame({'product_id': [1, 2, 3], 'amount': [100, 200, 300]})
df_costs = pd.DataFrame({'product_id': [2, 3, 4], 'amount': [50, 150, 250]})
df_profits = pd.DataFrame({'product_id': [3, 4, 5], 'amount': [50, 100, 150]})

# 把DataFrame和对应的名称整理成两个列表(用字典存储会更方便)
df_list = [df_sales, df_costs, df_profits]
df_names = ['sales_amount', 'costs_amount', 'profits_amount']  # 每个df对应的新列名

2. 给每个DataFrame重命名指定列

接下来遍历每个DataFrame,把你要修改的列(这里是amount)改成对应df的名称:

# 存储重命名后的DataFrame,注意复制原df避免修改原始数据
renamed_dfs = []
for df, new_col_name in zip(df_list, df_names):
    temp_df = df.copy()
    # 重命名目标列
    temp_df.rename(columns={'amount': new_col_name}, inplace=True)
    renamed_dfs.append(temp_df)

如果你是用字典存储的df(比如df_dict = {'sales': df_sales, 'costs': df_costs}),遍历起来更直观:

df_dict = {'sales_amount': df_sales, 'costs_amount': df_costs, 'profits_amount': df_profits}
renamed_dfs = []
for col_name, df in df_dict.items():
    temp_df = df.copy()
    temp_df.rename(columns={'amount': col_name}, inplace=True)
    renamed_dfs.append(temp_df)

3. 执行全连接(Full Outer Join)

用functools.reduce来依次合并所有重命名后的df,基于共同的主键列(比如这里的product_id),设置how='outer'就是全连接:

# 全连接所有DataFrame
full_joined_result = reduce(
    lambda left_df, right_df: pd.merge(left_df, right_df, on='product_id', how='outer'),
    renamed_dfs
)

运行后你会得到这样的结果:

product_idsales_amountcosts_amountprofits_amount
1100NaNNaN
220050NaN
330015050
4NaN250100
5NaNNaN150

一些补充说明

  • 如果你的共同主键是多个列,只需要把on='product_id'改成on=['col1', 'col2']这样的列名列表就行。
  • 全连接会保留所有df里的行,没有匹配到的值会用NaN填充,完全符合你要的full_join效果。
  • 记得用df.copy(),不然会不小心修改原始的DataFrame,导致后续出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:43:51