我有两个csv数据文件,其中每一行都有一个100%的唯一元素(注意行的顺序不一样),例如。
title1,title2,title3,UniqueElment,title4,title5
data,data,data,dasasd1245,data,data
data,data,data,dasasd1395,data,data
data,data,data,dasasd2594,data,data
data,data,data,dasasd9587,data,data
titlea,titleb,titlec,titled,titlee,titlef,UniqueElment,titleg,titleh,titlei
text,text,text,text,text,text,dasasd1245,text,text,data
text,text,text,text,text,text,dasasd2594,text,text,data
text,text,text,text,text,text,dasasd1395,text,text,data
text,text,text,text,text,text,dasasd9587,text,text,data
title1,title2,title3,UniqueElment,title4,title5,titlea,titleb,titlec,titled,titlee,titlef,UniqueElment,titleg,titleh,titlei
data,data,data,dasasd1245,data,data,text,text,text,text,text,text,dasasd1245,text,text,data
data,data,data,dasasd1395,data,data,text,text,text,text,text,text,dasasd1395,text,text,data
data,data,data,dasasd2594,data,data,text,text,text,text,text,text,dasasd2594,text,text,data
data,data,data,dasasd9587,data,data,text,text,text,text,text,text,dasasd9587,text,text,data
我需要创建一个最终的CSV,其中两个csvs的数据根据匹配的UniqueElement合并在一起。
答案 0 :(得分:8)
有人可能会写一个基于csv
的答案,所以我会给pandas
方法进行比较:
df1 = pd.read_csv("file1.csv")
df2 = pd.read_csv("file2.csv")
merged = df1.merge(df2, on="UniqueElment")
merged.to_csv("merged.csv", index=False)
产生
$ cat merged.csv
title1,title2,title3,UniqueElment,title4,title5,titlea,titleb,titlec,titled,titlee,titlef,titleg,titleh,titlei
data,data,data,dasasd1245,data,data,text,text,text,text,text,text,text,text,data
data,data,data,dasasd1395,data,data,text,text,text,text,text,text,text,text,data
data,data,data,dasasd2594,data,data,text,text,text,text,text,text,text,text,data
data,data,data,dasasd9587,data,data,text,text,text,text,text,text,text,text,data
如果像@beroe所说的那样,你想要冗余的UniqueElment
列,这也很容易 - 我们只需要对它们进行排序以确保它们处于相同的顺序然后将它们连接起来:
df1 = df1.sort("UniqueElment").reset_index(drop=True)
df2 = df2.sort("UniqueElment").reset_index(drop=True)
merged = pd.concat([df1, df2], axis=1)
或者,我们可以将索引设置为UniqueElment
并合并等,这对于数据中的错误会更加健壮。关键是,像这样的操作只需要几行左右。