这是我的data.csv
a,1,1-Jan-2017
a,2,3-Jan-2017
a,4,14-Feb-2017
b,21,1-Dec-2016
b,7,28-Nov-2016
我的目标是在下面打印作为最终列表。格式是唯一的(first_column),no.of occurences
a,3
b,2
写在python脚本下面但无法输入第二个块来打印'第二个块'虽然相同的逻辑在前一个循环中工作正常。
import csv
with open('/home/user/python/data.csv') as csvfile :
DataCaptured = csv.reader(csvfile,delimiter=',')
UniqueValues = []
FinalList = []
for row in DataCaptured :
if row[0] not in UniqueValues :
UniqueValues.append(row[0])
print 'Unique values are:\n' + str(UniqueValues)
for unique in UniqueValues :
counter = 0
print 'First block',unique
for row in DataCaptured :
print 'Second block'
if unique == row[0] :
counter = int(counter)+1
FinalList.append(unique+','+str(counter))
print 'Final list:\n' + str(FinalList)
答案 0 :(得分:4)
这是因为你已经在第一个循环之后读完了整个文件;此时读者的迭代器中没有更多的行。在第一个csvfile.seek(0)
循环后使用for
返回到文件的开头,它将起作用。
答案 1 :(得分:1)
您可以稍微简化程序,只迭代文件一次:
import numpy as np
df = df.replace('', np.nan)
df['doc_type'] = np.where(df.b_id.isnull() | (df.a_score >= df.b_score),
np.where(df.a_id.isnull(), None, 'a'), 'b')
df