我有一个CSV文件,需要删除或只是跳过或替换0
列表中表示为None
的一些丢失数据。 CSV文件中的Row1 = [1, 2, 3, 4, none, 5, 6, 7, 8, 9]
和row2 = [1, 2, 3, 4, 5, 6, none, 7, 8, 9]
。
counter=0
for lines in csv:
list_all=lines.split(',')
list_all=lines.strip()
counter+=1
for ch in range(len(list_all)):
if list_all[ch]=='?':
list_all.replace('?',0)
list_0=float(list_all[0])
list0.append(list_0)
avelist0=(sum(list0)/counter)
我需要得到每列中所有值的总和;当然不包括None
。我一直收到错误:
TypeError: Can't convert 'int' object to str implicitly.
我还是Python的新手,如果可能的话,我想用for
循环来做这件事。我无法使用列表推导。
因此,第一个列表的平均值为22.5
,22.5
为第二个列表。
答案 0 :(得分:1)
因为您无法使用列表推导,所以您想要做的是列表中的map
:
l = [1,2,3,4,None,5,6,7,8,9]
new_l = map(lambda x: 0 if x.lower().strip() == 'none' else int(x), l)
print new_l # [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]
然后,如果您想要对整个列表求和,请使用sum
:
sum(new_l) # returns 45