我必须计算csv文件的特定列中的项目数(由" /"分隔)。
示例csv图表:
Col1 Col2 Col3 Col4
1 A/B/C 1 1
2 E 2 2
3 Z/F 3 3
4 G 4 4
所以我需要只计算Col2中的A,B,C,E,Z,F,G,我需要确保" Col2"没有计入总数。我的问题是" Col2"正计入最终数字......
答案应该是7.
这是我到目前为止所做的: import csv
total = {}
with open('result.csv') as f:
rows = csv.reader(f)
for line in rows:
total = 0
for num in line.strip().split('/'):
total =+ int(num)
print total
任何帮助或提示将不胜感激!先感谢您。 :)
答案 0 :(得分:1)
这将仅在包含正斜杠的第2列上进行拆分,然后它将找到spitted项的长度,并将它添加到count变量的长度。
with open('file') as f:
reader = csv.reader(f)
next(reader, None)
count = 0
for line in reader:
count += len(line[1].split('/'))
print(count)
答案 1 :(得分:0)
如何计算每行中的斜杠数?
total = 0
for line in rows:
numSlashes = line.count('/')
if numSlashes > 0:
total += numSlashes + 1
编辑:如果要在出现斜线时计算仅项,请使用上述逻辑。如果你想计算单个项目,但只是忽略第一行,那么只需跳过第一行,例如
for line in rows[1:]:
numSlashes = line.count('/')
total += numSlashes + 1
答案 2 :(得分:0)
如果您实际上有逗号分隔值:
with open('in.csv') as f:
next(f) # skip header
rows = csv.reader(f)
print(sum(len(row[1].split("/")) for row in rows))
7
答案 3 :(得分:0)
您可以使用pandas库使用get_dummies()
方法解决此问题:
>>> import pandas
>>> pandas.read_csv('result.csv')
>>> df.Col2.str.get_dummies(sep="/").values.sum()
7
如果您需要做的不仅仅是计数,这可能是一个好主意,例如,如果您需要每个项目出现的时间。
>>> df.Col2.str.get_dummies(sep="/").sum(0)
A 1
B 1
C 1
E 1
F 1
P 1
Z 1
dtype: int64