python读取两个csv文件数据,进行查找匹配出现次数
Posted 董明龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python读取两个csv文件数据,进行查找匹配出现次数相关的知识,希望对你有一定的参考价值。
现有需求 表1
表2
需要拿表1中的编码去表2中的门票编码列匹配,统计出现的次数,由于表2编码列是区域间,而且列不是固定的,代码如下
1 #encoding:utf-8 2 ##导入两个CSV进行比对 3 import csv 4 ##读取编码 5 def GetQrCode(filePath): 6 #定义一个空的list集合 7 list = set() 8 csv_file = csv.reader(open(filePath, \'r\')) 9 for item in csv_file: 10 # 判断字符串是否为纯数字 11 if (item[0].isdigit()): 12 ##将正常的编码存储到集合 13 yield item[0] 14 15 16 def GetNumberList(filePath): 17 csv_file = csv.reader(open(filePath, \'r\')) 18 #去掉表头 19 flag=True 20 for item in csv_file: 21 if flag: 22 # 去掉表头 23 flag=False 24 continue 25 if len(item) > 1: 26 yield item 27 28 29 if __name__ == \'__main__\': 30 #定义字典装结果集 31 dicList={} 32 33 34 #获取编码列表 35 qrcodelist=GetQrCode(\'E:\\\\new_qrcode.csv\') 36 #获取要匹配的号段list 37 numberList=GetNumberList(\'E:\\\\门票统计汇总 - 副本.csv\') 38 isBreak=False 39 for qrcode in qrcodelist: ##最外层全部的qrcode 40 #print(qrcode) 41 #注意,这里要讲list转换为列表,否则循环过的元素不会重复进行 42 numberList=list(numberList) 43 for numbers in numberList: ##号段里的每一行 44 if isBreak: 45 isBreak=False 46 47 break 48 numbers=[i for i in numbers if i != \'\'] 49 numbers=list(numbers) 50 for number in numbers: 51 if number!=numbers[0]: #单个号段 52 if number !=\'\': 53 #判断一组还是两组 54 numberLength=len(str(number).split(\'-\')) 55 if numberLength>1: 56 #两组的 57 firstNumber=int(str(number).split(\'-\')[0]) 58 lastNumber=int(str(number).split(\'-\')[1]) 59 #print("first:"+str(firstNumber)+":"+str(lastNumber)) 60 qrcode=int(qrcode) 61 62 if qrcode>=firstNumber and qrcode<=lastNumber: 63 if numbers[0] in dicList.keys(): 64 dicList[numbers[0]]=int(dicList[numbers[0]])+1 65 else: 66 dicList[numbers[0]] =1 67 isBreak=True 68 break 69 else: 70 #一组的 71 #print(str(number)) 72 firstNumber = int(number) 73 74 if qrcode==firstNumber: 75 if numbers[0] in dicList.keys(): 76 dicList[numbers[0]]=int(dicList[numbers[0]])+1 77 else: 78 dicList[numbers[0]] =1 79 isBreak = True 80 break 81 82 83 #讲结果集写入csv文件 84 # 打开文件,追加a 85 out = open(\'E:\\\\resut_1.csv\', \'w\', newline=\'\') 86 87 # 设定写入模式 88 csv_write = csv.writer(out, dialect=\'excel\') 89 # 写入具体内容 90 csv_write.writerow([\'渠道名称\',\'次数\']) 91 92 for item in dicList: 93 print(item+":"+str(dicList[item])) 94 csv_write.writerow([item,str(dicList[item])]) 95 out.close()
导出数据结果:
以上是关于python读取两个csv文件数据,进行查找匹配出现次数的主要内容,如果未能解决你的问题,请参考以下文章
将两个 csv 文件与 python pandas 进行比较
Python:读取两个 csv 文件组合成一个新的 cvs 文件,错误:太多值无法解压
Python:读取两个 csv 文件组合成一个新的 cvs 文件,错误:太多值无法解压
如何使用 python pandas 在本地系统 Jupyter Notebook 中读取两个较大的 5GB csv 文件?如何在本地加入两个数据框进行数据分析?