Я очень плохо знаком с Python, и у меня возникла проблема с условной заменой элементов списка.
У меня есть файл CSV, из которого мне нужно извлечь один из столбцов с 3256 элементов, все поплавки; В этом столбце мне нужно найти элементы, которые удовлетворяют условию z-0.04 > i > z+0.04
.
Образец элементов: 0,285326, 0,38674, 0,38669, 0,223641, 0,280949 ...
Далее, обратно в мой CSV файл, мне нужно будет удалить всю строку, которая состоит из z-0.04 > i > z+0.04
элементов, но, поскольку я до сих пор не знаю, как это сделать, я просто хочу заменить их на 'DEL'.
Так что здесь мой код:
import csv
f = open('msample.csv')
csv_r = csv.reader(f)
csv_f = csv.writer(f)
#converting the redshift column into a list
redshlist = []
for row in csv_r:
redshlist.append(row[3])
#converting all the elements in redshlist from str to float
redshlist = [float(i) for i in redshlist]
z = 0.226
credshlist = []
for i in redshlist:
if z - 0.04 > i > z + 0.04:
i = 'DEL'
credshlist.append(i)
credshlist = redshlist
print(redshlist)
К сожалению, это не заменяет элементы, для которых z-0.04 > i > z+0.04
имеет значение true, просто печатает мой столбец CSV без изменений. Я не могу найти ошибку, кусок кода с условной заменой отдельно работает в интерпретаторе python (я пробовал до 20 элементов) ... Может кто-нибудь сказать мне, что не так?