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

如何纵向合并列名略有差异的两个数据集并统一保留指定列结构?

我来帮你搞定这个数据集合并的需求,下面分别用Python Pandas和R这两种最常用的数据分析工具给出具体解决方案,你可以根据自己的技术栈选择:

Python Pandas 解决方案
  • 核心思路:先调整数据集2的列结构,使其和数据集1对齐,再进行纵向合并
  • 具体步骤代码如下:
import pandas as pd

# 构造示例数据集(如果是从文件读取,替换为 pd.read_csv("你的文件路径") 即可)
df1 = pd.DataFrame({
    "ID": [1, 8],
    "Name": ["Richard", "Sam"],
    "Territory": ["NY", "California"],
    "Sales": [59, 44]
})

df2 = pd.DataFrame({
    "Terr": ["LA", "MH"],
    "ID": [5, 11],
    "Name": ["Rick", "Oly"],
    "Comments": ["yes", "no"]
})

# 处理数据集2:重命名列、删除无用字段、补充缺失列
df2_processed = df2.rename(columns={"Terr": "Territory"}) \
                   .drop(columns=["Comments"]) \
                   .assign(Sales=pd.NA)

# 纵向合并两个数据集,重置索引避免重复
final_df = pd.concat([df1, df2_processed], ignore_index=True)

# 查看结果
print(final_df)

执行后会得到你需要的目标格式,其中pd.NA会自动匹配数据集1中Sales列的数值类型。

R 解决方案
  • 核心思路:用dplyr工具链快速调整列结构,再合并数据集
  • 具体步骤代码如下:
library(dplyr)

# 构造示例数据集(从文件读取可替换为 read.csv("你的文件路径"))
df1 <- data.frame(
    ID = c(1, 8),
    Name = c("Richard", "Sam"),
    Territory = c("NY", "California"),
    Sales = c(59, 44),
    stringsAsFactors = FALSE
)

df2 <- data.frame(
    Terr = c("LA", "MH"),
    ID = c(5, 11),
    Name = c("Rick", "Oly"),
    Comments = c("yes", "no"),
    stringsAsFactors = FALSE
)

# 处理数据集2并合并
final_df <- df2 %>%
    rename(Territory = Terr) %>%  # 重命名列
    select(ID, Name, Territory) %>%  # 保留需要的字段
    mutate(Sales = NA_real_) %>%  # 补充Sales列,用数值型NA
    bind_rows(df1, .)  # 和数据集1合并,顺序保持示例要求

# 查看结果
print(final_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:11:04