我正在尝试将值附加到csv文件的每一行的末尾,具体取决于特定单元格的值。如果它是负数,那么我希望它附加“-1”,如果它是正数,我希望它附加“1”。
我的问题是,如果行的值为0,我也希望它附加“1”。无论我尝试什么,当这个单元格为0时,我不断添加“-1”。我试过添加if的唯一条件是0或者== 0但是这些似乎都不起作用(有效的东西会阻止所有正确的数据附加“-1”)。 csv中的数据实际上存储为.000000,但与此字符串相比具有与0相比的相同问题。令人难以置信的是,任何帮助都非常受欢迎。
with open('TransactionFilled.csv', 'r') as infile, open('Transactions.csv', 'w+',newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
if row[18] < '0':
row.append('-1')
writer.writerow(row)
else:
row.append('1')
writer.writerow(row)
答案 0 :(得分:2)
这假设row [18]包含一个整数,而不是float:
with open('TransactionFilled.csv', 'r') as infile, open('Transactions.csv', 'w+',newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
if row[18].isdigit() and int(row[18]) < 0:
row.append('-1')
writer.writerow(row)
else:
row.append('1')
writer.writerow(row)
如果row[18]
中有非int,你可以使用float(row[18])
将其转换为浮点数 - string.isdigit()将无效,因此您可能需要防范转换问题否则:
for row in reader:
try:
if float(row[18]) < 0:
row.append('-1')
writer.writerow(row)
else:
row.append('1')
writer.writerow(row)
except ValueError:
# append whatever you would like to append if no float is convertable