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

如何在R中将4个结构相似的Data Frame合并为指定格式?

合并多年份DataFrame为指定格式的实现方法

实现思路

  • 对每个年份的DataFrame单独处理:重命名产品列为统一的Product,修改Number列为带年份的名称,合并Minimum和Maximum为「Min-Max 年份」格式的列,只保留需要的核心列。
  • 将所有处理后的DataFrame按Product列进行匹配合并,得到最终的统一表格。

代码实现(以Python Pandas为例)

假设你已拥有四个年份的DataFrame,分别命名为df_2018、df_2019、df_2020、df_2021。

1. 编写通用处理函数

先写一个可复用的函数,用来标准化处理单个年份的DataFrame:

import pandas as pd

def process_yearly_df(df, year):
    # 重命名「Product 年份」列为统一的Product
    df = df.rename(columns={f"Product {year}": "Product"})
    # 重命名Number列为带年份的名称
    df = df.rename(columns={"Number": f"Number {year}"})
    # 合并Minimum和Maximum为「Min-Max 年份」列
    df[f"Min-Max {year}"] = df.apply(lambda row: f"{row['Minimum']}-{row['Maximum']}", axis=1)
    # 只保留需要的列
    return df[["Product", f"Number {year}", f"Min-Max {year}"]]

2. 处理所有年份的DataFrame

用上述函数逐个处理每个年份的数据:

df_2018_processed = process_yearly_df(df_2018, 2018)
df_2019_processed = process_yearly_df(df_2019, 2019)
df_2020_processed = process_yearly_df(df_2020, 2020)
df_2021_processed = process_yearly_df(df_2021, 2021)

3. 合并处理后的DataFrame

因为所有年份的Product内容完全一致,直接按Product列依次合并即可:

final_df = df_2018_processed.merge(df_2019_processed, on="Product")\
                            .merge(df_2020_processed, on="Product")\
                            .merge(df_2021_processed, on="Product")

补充说明

  • 通用函数可适配任意年份的DataFrame,后续新增年份数据时直接调用即可,无需重复编写处理逻辑。
  • 使用merge方法合并能确保即使不同年份DataFrame的Product顺序不一致,也能精准匹配,避免数据错位。
  • 如果Minimum或Maximum是数值类型,f-string会自动将其转为字符串,生成X-Y格式的合并内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:10:23