Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算在python中出现在同一行的csv文件中出现的相同单词数_Python_Csv - Fatal编程技术网

计算在python中出现在同一行的csv文件中出现的相同单词数

计算在python中出现在同一行的csv文件中出现的相同单词数,python,csv,Python,Csv,我有一个外部csv文件,我想计算出现在同一行中的相同单词的数量。 我的csv看起来像这样 Timestamp,Destination,Source 2015-05-25,A,B 2015-05-25,A,B 2015-05-25,A,B 2015-05-25,C,D 2015-05-25,C,D 2015-05-25,E,F 2015-05-25,E,F 2015-05-25,E,F 2015-05-25,E,F 在上面的csv文件中,单词A、B似乎相互通信了3次C、2次D和4次E、F,因此我

我有一个外部csv文件,我想计算出现在同一行中的相同单词的数量。
我的csv看起来像这样

Timestamp,Destination,Source
2015-05-25,A,B
2015-05-25,A,B
2015-05-25,A,B
2015-05-25,C,D
2015-05-25,C,D
2015-05-25,E,F
2015-05-25,E,F
2015-05-25,E,F
2015-05-25,E,F
在上面的csv文件中,单词A、B似乎相互通信了3次C、2次D和4次E、F,因此我想使用python将此信息写入csv文件。
应该是这样的

Destination,Source,Counts
A,B,3
C,D,2
E,F,4
使用,您可以轻松计算单词的出现次数

import csv
from collections import Counter

with open('words.csv') as f:
    next(f)  # skip header
    occurrence = Counter(tuple(row[1:3]) for row in csv.reader(f))

with open('occurrence.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['Destination', 'Source', 'Counts'])
    for (dest, src), cnt in occurrence.items():
        writer.writerow([dest, src, cnt])

您几乎拥有了所有的逻辑,只需编写以下项目:

import csv
from collections import Counter
from itertools import imap
from operator import  itemgetter

with open('in.csv') as f, open("out.csv", "w") as o:
    wr = csv.writer(o)
    next(f)
    o.write("Destination,Source,Counts")
    wr.writerows([a, b, c] for (a, b), c in
                 Counter(imap(itemgetter(1, 2), csv.reader(f))).iteritems())
out.csv:

Destination,Source,Counts
A,B,3
C,D,2
E,F,4

请与我们分享您迄今为止的尝试。。。还有很多路要走。这正是我想要的@falsetru先生。