比较python中文件夹中所有csv文件之间的一列,并输出结果

时间:2017-05-08 10:04:11

标签: python-2.7 loops csv pandas

我在一个文件夹中有80个csv文件,并希望将每个文件的第一列(我的文件中没有标题)与其他文件的所有其他第一列进行比较(无需重复例如fileA,FileB到FileB ,FILEA) 因此,此列可能包含数千行,每行包含一个用户名。目标是输出一个新的csv文件:

output.csv:

fileA,fileB,3,'James'-'samuel'-'Gregg'

fileA,filec,5,'Gregg'-'Traba'-'foo'

所以我开始尝试解开它,但是我陷入了无限循环:

import csv as csv
output = open('output.csv', 'wb')
writer = csv.writer(output)
list_file = ['fileA.csv', 'fileB', 'fileC.csv', 'fileD.csv', 'fileE.csv']
for file1 in list_files:
    csv_obj = csv.reader(open(file1, 'rb'))
    for file2 in list_files:
        csv_obj2 = csv.reader(open(file2, 'rb'))
        for line in csv_obj:
            for line1 in csv_obj2:
                if line == line2 ....

此时我无法弄清楚可以用来避免这些无休止的循环!?我该怎么用?

更新

示例CSV文件:

file1.csv:

7627012826,jamesGam,followers,623,370,5,293,Tue
2955713991,samRichard,followers,3769,3383,45,170,Wed
250898317,CamalSarj,followers,1352,2365,111,10954,Sat
928898317,JangiBell,followers,9152,2365,731,74954,Sat

file2.csv:

118898359,JangiBell,followers,73152,9815,381,177954,Sat
9227010126,jorgebel,followers,7223,37550,5,9193,Sat
1105742991,samRichard,followers,7609,8283,985,285,Wed
623898922,Estovagre,followers,956,8393,921,1981,Tue

输出将以这种格式出现在output.csv中:

file1,file2,2,'samRichard'-'JangiBell'

1 个答案:

答案 0 :(得分:1)

我只使用pandas进行csv读写。在我看来,所需逻辑的主要部分是设置交叉点(以获得共同的名称)和成对匹配。

JSpinner