合并公共列匹配的两个csv文件

时间:2015-09-24 16:43:43

标签: python csv merge

我有一个csv的用户和一个csv的虚拟机,我需要将用户合并到他们的vms中,只有他们的id匹配。

但是我得到的是一个包含所有内容的巨大文件。

file_names = ['vms.csv', 'users.csv']


o_data = []


for afile in file_names:
    file_h = open(afile)
    a_list = []
    a_list.append(afile)
    csv_reader = csv.reader(file_h, delimiter=';')
    for row in csv_reader:
        a_list.append(row[0])

    o_data.append((n for n in a_list))
    file_h.close()

with open('output.csv', 'w') as op_file:
    csv_writer = csv.writer(op_file, delimiter=';')
    for row in list(zip(*o_data)):
        csv_writer.writerow(row)
op_file.close()

我对python比较新,我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我总是发现大熊猫对这样的任务非常有帮助。您可以简单地将数据集加载到pandas数据框中,然后使用合并函数将它们合并到列中的值相同的位置。

    import pandas
    vms = pandas.read_csv('vms.csv')
    users = pandas.read_csv('users.csv')

    output = pandas.merge(vms, users)
    output.to_csv('output.tsv')

您可以在http://pandas.pydata.org/pandas-docs/stable/merging.html

找到不同选项的文档