Python 从多个CSV文件中提取信息,用第三列写入新的CSV

Python 从多个CSV文件中提取信息,用第三列写入新的CSV,python,csv,Python,Csv,我有一个包含四个CSV文件的文件夹。在每个CSV中都有动物,每个动物都有若干次出现。我正在尝试创建一个CSV,它收集文件夹中所有CSV的信息,删除重复项,并添加第三列,列出在其中找到动物的原始文件。例如lion,4,'file2,file4' 我真的希望我的新CSV有一个第三列,列出哪些文件包含每种动物,但我不知道它。我试着用第二本字典来做这件事——参考带有locationCount的行。 请在下面查找我正在使用的当前脚本。 我拥有的文件: file1.csv: cat,1 dog,2 bird

我有一个包含四个CSV文件的文件夹。在每个CSV中都有动物,每个动物都有若干次出现。我正在尝试创建一个CSV,它收集文件夹中所有CSV的信息,删除重复项,并添加第三列,列出在其中找到动物的原始文件。例如
lion,4,'file2,file4'

我真的希望我的新CSV有一个第三列,列出哪些文件包含每种动物,但我不知道它。我试着用第二本字典来做这件事——参考带有
locationCount
的行。 请在下面查找我正在使用的当前脚本。

我拥有的文件:

file1.csv:
cat,1
dog,2
bird,1
rat,3

file2.csv:
bear,1
lion,1
goat,1
pig,1

file3.csv:
rat,1
bear,1
mouse,1
cat,1

file4.csv:
elephant,1
tiger,2
dog,1
lion,3
当前脚本:

import glob
import os
import csv, pdb

listCSV = glob.glob('*.csv')
masterCount = {}
locationCount = {}
for i in listCSV: # iterate over each csv
    filename = os.path.split(i)[1] # filename for each csv
    with open(i, 'rb') as f:
        reader = csv.reader(f)
        location = []
        for row in reader:
            key = row[0]
            location.append(filename)
            masterCount[key] = masterCount.get(key, 0) + int(row[1]) 
            locationCount[key] = locationCount.get(key, location)
writer = csv.writer(open('MasterAnimalCount.csv', 'wb'))
for key, value in masterCount.items():
    writer.writerow([key, value])

你几乎是对的-以处理计数的相同方式处理位置

我已经重新命名和修改了一些东西,但基本上都是相同的代码结构。masterCount将数字添加到以前的数字中,masterLocations将文件名添加到以前的文件名列表中

从全局导入全局
导入操作系统、csv、pdb
主计数={}
主位置={}
对于全局('*.csv')中的i:
filename=os.path.split(i)[1]
对于动物,在csv.reader中计数(打开(i)):
masterCount[动物]=masterCount.get(动物,0)+int(计数)
masterLocations[animal]=masterLocations.get(animal,[])+[filename]
writer=csv.writer(打开('MasterAnimalCount.csv','wb'))
对于masterCount.keys()中的动物:
writer.writerow([animal,masterCount[animal],','.join(masterLocations[animal]))

非常感谢!我为此工作了几个小时,但没有多大成功。