繁体   English   中英

Python:对应的CSV行值

[英]Python: Corresponding CSV Row Values

对于代码中指定的两列(IP和平台)的每个对应值,我想将它们串联起来,然后计算该串联字符串在整个csv数据库中出现的次数。

目前,此代码需要将近一个小时才能在命令行中浏览1000行数据,这似乎是double-for循环的结果。 如果没有其他问题,如何将每个对应IP的平台附加到users_country_platform列表,而不使用此double-for循环?

import sys
import csv
from collections import Counter

users_country_platform = []
with open(sys.argv[1], 'r') as UserLog:
    IPs = [row['client_ip_address'] for row in csv.DictReader(UserLog)]
    UserLog.seek(0)
    platforms = [row['platform'] for row in csv.DictReader(UserLog)]
    for platform in platforms:
        for IP in IPs:
            if IP != 'NULL' and platform != 'NULL' or 'None':
               users_country_platform.append(str(response.country.iso_code) + ', ' + platform)

另一种解决方案是在国家/地区密钥内建立一个子数组,以便输出格式为[country:platform:count],但是我想我需要一种不同的计数方法。 关于这两种方法的建议将不胜感激。

在此处输入图片说明

我使用了一个非常简单的示例,但希望您可以使用以下代码并将其纳入您的代码中。 采用上述csv格式,请考虑以下因素:

import csv
import os
cwd = os.getcwd()

counter = {}
with open(cwd+'\\test.csv', 'rb') as file_in:
    reader = csv.DictReader(file_in, restval=None, restkey=None, dialect='excel')
    for row in reader:
        conc = row['ip'] + row['platform']
        counter.setdefault(conc, 0)
        counter[conc] += 1

print counter

希望这显示了如何仅用一个循环就可以计算两列的唯一出现!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM