如何纵向合并列名略有差异的两个数据集并统一保留指定列结构?
我来帮你搞定这个数据集合并的需求,下面分别用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
相关产品推荐
相关产品推荐

