0是在Python中评估小于0

时间:2017-12-20 22:33:39

标签: python-3.x csv

我正在尝试将值附加到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)

1 个答案:

答案 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