2015-09-24 179 views
0

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

但所有即时通讯都是一个包含所有内容的巨大文件。

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() 

我相对较新的蟒蛇,我错过了什么?

+0

什么让你觉得文档'拉链(* o_data)'会自动匹配你的数据? –

+0

Idk,我的猜测是这就是为什么我只是得到巨大的文件? – MrUglama

+0

我如何告诉它只需添加我想要的? – MrUglama

回答

0

我一直发现熊猫真的有助于这样的任务。您可以简单地将数据集加载到熊猫数据框中,然后使用合并功能将它们合并到一列中的值相同的位置。

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

相关问题