两个csv文件中都有公共列B,怎么用python将两个csv文件根据公共列合并为一个含有所有信息的文件:
这里想到的是“曲线救国”版:即将两个csv文件都转为excel文件,再对两个文件使用pandas里面的merge函数,根据公共列B进行合并。先转为excel文件主要是可以直接调用相关函数,较方便。
解决代码:
import pandas as pd
# 将两个csv文件转为excel文件
df1 = pd.read_csv('csv1.csv', delimiter='\t')
df2 = pd.read_csv('csv2.csv', delimiter='\t')
df1.to_excel('csv1.xlsx', index=False)
df2.to_excel('csv2.xlsx', index=False)
# 将两个文件根据公共列column B进行合并
d1 = pd.read_excel('csv1.xlsx')
d2 = pd.read_excel('csv2.xlsx')
merged_df = pd.merge(d1, d2, on='column B') #column B为公共列列名
# 保存合并后的Excel文件(也可以转为csv文件进行保存)
merged_df.to_excel('csv1_csv2.xlsx', index=False)
合并效果:
csv1文件中有column A,columnB两列,csv2文件中有column B,columnC两列,合并后的文件为一个含column A,columnB,columnC三列的文件,需要注意的是在合并时一定要确保两个csv文件公共列列名相同,否则可能查询不到。
例:转为excel的csv1文件为:(这里为根据公共列CIDs列进行合并效果图)
转为excel的csv2文件为:
合并后文件为:
此方法为曲线救国版,当然如果有直线版就更好啦,如果有大神知道,就请补充一下啦~
(主要是本人不太熟练且试过一些直线方法均没有成功/(ㄒoㄒ)/~~)