求Python/R代码:合并多份CSV文件且不重复第一列
多CSV文件合并方案(保留唯一公共列)
问题说明
现有10份CSV文件,每份包含两列,且第一列的行数、每行内容完全对应。需要将这些文件合并为一个CSV,要求第一列仅保留一份,最终文件共11列(1列公共列 + 10份文件的第二列)。
输入示例
file1.csv(A、B列):
A B 2007-1 100 2007-1 4 2007-1 30 2007-1 22 2007-1 13 2007-1 12
file2.csv(A、C列):
A C 2007-1 33 2007-1 56 2007-1 34 2007-1 3 2007-1 55 2007-1 68
期望输出
A B C 2007-1 33 100 2007-1 56 4 2007-1 34 30 2007-1 3 22 2007-1 55 13 2007-1 68 12
Python实现(基于pandas)
import pandas as pd # 定义所有CSV文件路径,按需修改文件名或路径 csv_files = [f"file{i}.csv" for i in range(1, 11)] # 读取第一个文件作为基础(sep参数根据实际CSV分隔符调整,逗号分隔用sep=',') merged_df = pd.read_csv(csv_files[0], sep=r'\s+') # 遍历剩余文件,仅提取第二列进行拼接 for file in csv_files[1:]: df = pd.read_csv(file, sep=r'\s+') merged_df = pd.concat([merged_df, df.iloc[:, 1]], axis=1) # 保存合并后的文件 merged_df.to_csv("merged_file.csv", index=False, sep=',')
R实现(基于dplyr+readr)
library(dplyr) library(readr) # 定义CSV文件列表,按需修改 csv_files <- paste0("file", 1:10, ".csv") # 读取第一个文件(delim参数根据实际分隔符调整,逗号分隔用delim=',') merged_df <- read_delim(csv_files[1], delim = "\\s+") # 遍历合并剩余文件的第二列 for (file in csv_files[-1]) { df <- read_delim(file, delim = "\\s+") merged_df <- bind_cols(merged_df, select(df, 2)) } # 保存结果 write_csv(merged_df, "merged_file.csv")
内容的提问来源于stack exchange,提问作者misoo
相关产品推荐
相关产品推荐

