追加列如果匹配列从另一个csv与python

new9mtju  于 2023-05-11  发布在  Python
关注(0)|答案(2)|浏览(119)

我有两个csv文件csv 1和csv 2。我希望打开csv 1,在csv 2中找到匹配的值,然后将匹配的值附加到csv 1上,然后保存csv 1。就像这样

CSV1

ID又一个头球
第一
第二
第三
第四次
第五届
第六届

**CSV2

ID又一个头球
第一
第三
第四次
第六届

CSV1

ID又一个头球来自csv 2的ID
第一第一
第二不适用
第三第三
第四次第四次
第五届不适用
第六届第六届

我试过使用Pandas合并功能,但我似乎不能使它工作。
csv1 = pd.merge(TABLE1, TABLE2, left_on='ID', right_on='ID', how='left')

rjjhvcjd

rjjhvcjd1#

如果ID在 * 两个文件 * 中都是唯一的,你可以尝试这样做:

TABLE1 = pd.read_csv("csv1.csv")
TABLE2 = pd.read_csv("csv2.csv", usecols=["ID"]).set_axis(["ID from csv2"], axis=1)

out = pd.merge(TABLE1, TABLE2, left_on="ID", right_on="ID from csv2", how="left")

out.to_csv("csv1.csv", sep=",", index=False, na_rep="N/A") #change the sep if needed

输出(csv1.csv):

ID,Another header,ID from csv2
First,row,First
Second,row,N/A
Third,row,Third
Fourth,row,Fourth
Fifth,row,N/A
Sixth,row,Sixth
dfddblmv

dfddblmv2#

我假设你只想合并2个 Dataframe ,因为你的代码与csv阅读无关。
一个简单的方法是在合并前复制第二个 Dataframe 中的ID列,只保留相关的列。
所以你可以这样写:

csv1 = pd.merge(table1,table2[['ID']].assign(**{'ID from csv2': table2.ID}),
                on='ID', how='left')

使用您的示例数据,它会按预期给出:

ID Another header ID from csv2
0   First            row        First
1  Second            row          NaN
2   Third            row        Third
3  Fourth            row       Fourth
4   Fifth            row          NaN
5   Sixth            row        Sixth

(of当然,这只有在ID在两个 Dataframe 中是唯一的时候才有意义...)

相关问题