【发布时间】:2021-04-25 07:48:52
【问题描述】:
我有一个 csv 文件列表。每个文件有 5 列,“id”作为唯一的公共列(主键)。其余 4 列都不同。
我的兴趣点是第 5(最后)列,每个文件都不同。我想将它们合并到“id”上。
我尝试了以下代码,但它以行方式连接,给了我太多重复的“id”和“NaN”值:
filelist = glob.glob(path + "/*.csv")
li = []
for filename in filelist:
df = pd.read_csv(filename, index_col=None, header=0, usecols=[0,5])
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)
我想将它们逐列连接到我的兴趣点列(第 5 列)。
例如:
我的文件列表:['df1.csv', 'df2.csv', 'df3.csv', 'df4.csv']
df1.csv 具有以下结构:
ID No1 AA
0 1 0 4
1 2 1 5
2 3 0 6
df2.csv 有这样的结构:
ID No2 BB
0 2 0 5
1 3 1 6
2 4 0 7
名单还在继续。我想要的输出是:
ID AA BB CC DD
0 1 4.0 NaN 0 1
1 2 5.0 5.0 1 0
2 3 6.0 6.0 1 0
3 4 NaN 7.0 1 1
任何建议将不胜感激。谢谢。
【问题讨论】:
-
读入数据时,可以设置
id为索引列。然后在所有数据帧上运行pd.join。或使用第一个数据帧作为左侧数据帧,其他数据帧作为右侧数据帧并在id索引上合并
标签: python pandas dataframe csv merge