我在一列中有一个csv文件,如下所示。符号和数字仅用于显示文件不仅包含文本。我有两个目标:
Stuff
I like apples. Sally likes apples.
Jim has 4 berries. !@#
John has 2 apples.
理想情况下,代码应该返回如下内容: {apples:3} {行数:2}
我已经编写了一些代码来尝试计算出现次数,但它没有正常运行(假设是因为标点符号)。另外,我不知道如何确定单词出现的行数;这可以像计算每行中唯一出现次数一样简单,但我不确定如何继续。这是我到目前为止的代码,在Python 3.6.1中完成:
import csv
my_reader = csv.reader(open('file.csv', encoding = 'utf-8'))
ctr = 0
for record in my_reader:
if record[0] == 'apples':
ctr += 1
print(ctr)
代码只返回0
作为答案。帮助
答案 0 :(得分:0)
您正在比较row == 'apple
,您需要的是if 'apple' in row
。要计算出现的事件,您可以使用str.count()
,例如:
import csv
my_reader = csv.reader(open('file.csv', encoding = 'utf-8'))
ctr = 0
rows = 0
for record in my_reader:
if 'apples' in record[0]:
rows += 1
ctr += record[0].count('apples')
print('apples: {}, rows: {}'.format(ctr, rows))
通过这种方式,您将检查row
是否包含apples
,然后将rows
增加1,并将ctr
的{{1}}增加apples
row
1}}。
答案 1 :(得分:0)
import collections
import csv
occurrences = collections.defaultdict(lambda: collections.Counter())
with open('path/to/file') as infile:
for r,row in enumerate(csv.reader(infile)):
r = (r,)
for word in (w for col in row for w in col.split()):
occurrences[word].update(r)
for word,occs in occurrences.items():
print("{} appears {} times on {} rows".format(word, sum(occs.values()), len(occs)))
答案 2 :(得分:0)
我不知道你为什么使用csv阅读器,因为你没有使用任何csv文件。
这是一个代码,可以使用更少的代码完成您所需的工作。
df[df.c2.rank(pct=True).gt(.8)]
c1 c2
5 f 98
9 j 99
以下是运行的代码: https://repl.it/JkVn/1