如何在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
相关产品推荐
相关产品推荐

