Как мне перебрать этот список, чтобы получить правильный ответ? - PullRequest
2 голосов
/ 29 марта 2019

Я пытаюсь перебрать список, чтобы получить список результатов, но первый вывод неверен.Мой код указан ниже

with open(csvpath, newline='') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',')
    csv_header = next(csvreader)
    total = 0
    for row in csvreader:
        #print(csvreader)
        total = int(row[1]) -total

Я пропустил первую строку, потому что она содержит заголовок.По сути, я должен вычитать (ячейка B2) 984655 из (ячейка b1) 867884. Но поскольку я использую цикл, первое значение в total равно 867884 или (ячейка B2 - 0).

Также я не могу использовать панд для этой проблемы, как это предусмотрено инструктором.

Я искал в Интернете и книгах, чтобы найти правильный способ найти ответ снет успеха

Результаты должны быть (ячейка B1) 867884 минус (ячейка b2) 984655. Но поскольку я использую цикл, первое значение в total равно 867884 или (ячейка B2 - 0).

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Я думаю, что вы получили большую часть пути с этим кодом. Я вставил переменную 'last', которая помещает предыдущую итерацию за пределы цикла for и назначает ее после запуска цикла. Проблема не чистая, но, надеюсь, вы сможете решить эту проблему.

with open('convertcsv.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
# csv_header = next(csvreader)
cvsfile = csvreader
last = 0
for value in csvreader:
    b1 = int(value[1])
    b2 = last
    if last == 0:
        next
        total = b1 - b2
        print(total)
        last = int(value[1])
0 голосов
/ 29 марта 2019

Ваша строка total = int(row[1]) -total на самом деле не имеет смысла, потому что вы используете только один столбец в любой точке (часть строки [1]). Это не факт, что вы используете цикл, даже с вашим циклом вы можете сделать что-то более похожее на:

with open(csvpath, newline='') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',')
    csv_header = next(csvreader)
    for row in csvreader:
        print(int(row[0]) - int(row[1])) # use indexes to specify which column you need

Я оставлю это вам, чтобы найти лучший способ получить только строку B;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...