我有一个像下面这样的csv文件。我希望Python获取第一列中的单元格共享相同ID的第一个数值。然后我想将ID和值存储在另一个csv中。
编辑:实际数据在excel中,但已保存为csv。这就是excel中字段的样子。 CSV以逗号分隔,没有标题。
id days
8215 \N
8215 \N
8215 700
8215 578
8215 1491
8215 1400
8215 486
18150 \N
18150 610
18150 730
18150 456
18150 548
18150 883
30610 \N
30610 792
30610 518
.
.
期望的结果:
8215 700
18150 610
30610 792
.
.
这是我到目前为止所拥有的。我希望它只打印'\ N'之后的第一个数值。不知何故,如果在第12列中有两行或多行'\ N',它仍会打印'\ N'。我还想像上面的例子一样保存ID。
import csv
with open('sg_cand.csv', 'rb') as csvfile:
csvReader = csv.reader(csvfile)
for row in csvReader:
if row[11] == '\N':
print csvReader.next()[11]
答案 0 :(得分:1)
使用set
跟踪您已记录的值为id
的值:
import csv
with open('sg_cand.csv', 'rb') as csvfile:
csvReader = csv.reader(csvfile)
seen = set()
for row in csvReader:
if row[0] not in seen and row[11] != '\N':
seen.add(row[0])
print row[0], row[11]
这会打印任何不等于row[11]
的{{1}}值,并且之前未见过其ID(此处假设为\N
)。