【发布时间】:2014-09-14 20:48:26
【问题描述】:
我有一个 CSV 文件,其中包含 3 列和 11 行的以下内容,第一行是标题。我自己创建了这个,以便有一个简单的文件可供学习。每个订单项都是一个水果订单。
OrderNo Fruit Origin
1 Apple NY
2 Orange FL
3 Banana CA
4 Pear NJ
5 Grapes VA
6 Grapes VA
7 Grapes MD
8 Grapes MA
9 Pineapple HI
10 Grapes GA
我正在尝试在 Python 中解析这些数据,以执行以下操作:
(1) 确定为每种水果生成最多订单的状态,(2) 确定每种水果任何单个状态的最高订单数,(3) 按字母顺序输出此结果,如下所示:
Apple NY 1
Banana CA 1
Grapes VA 2
Orange FL 1
Pear NJ 1
Pineapple HI 1
使用 csv.reader 读取 csv 文件后,我尝试使用 Counter 和 for 循环完成计数:
import csv
from collections import Counter
cnt = Counter()
f = open("/test.csv")
reader = csv.reader(f, delimiter=",")
header = next(f)
for row in reader:
cnt[row[2]] += 1
但是有更好的方法吗?
【问题讨论】:
-
如果 2 个州对特定水果的订单数量相同,您想输出什么?如果某些水果没有订单,您是否愿意在输出中完全不包含该水果?
-
刚刚发现一个错字,输出应该在 VA 之后显示 2,因为那里有 2 个订单,这是该水果的最大值。如果任何水果有 0 个订单,则没有输出。