Как сравнить CSV-столбцы из предыдущих и следующих строк? - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в Python и пытаюсь проверить, совпадают ли два значения в разных строках, и если они одинаковы, я хочу добавить это значение в предыдущий столбец в обеих строках.Например, если это мои данные:

'ola', 'b', '', '', 'c323'
'hello', 'i', '',  '', 'c324'
'hi', 'i', '', '', 'c324'

Я бы хотел, чтобы это вернулось:

'ola', 'b', '', '', 'c323'
'hello', 'i', '', 'c324', 'c324'
'hi', 'i', '', 'c324', 'c324'

Я пробовал пару вещей, например:

with open(filename, "r+") as file_one:
    reader_one = csv.reader(file_one, delimiter='\t') 
        with open(filename, "r+") as file_two:
            reader_two = csv.reader(file_two, delimiter='\t') 
                for row in reader_one:
                    corresp_info = row[3]
                    xml_info = row[4]
                    for compare_row in reader_two:
                        xml_compare = compare_row[4]
                        if xml_info == xml_compare:
                            corresp_info = xml_info
                        else:
                            continue

1 Ответ

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

Вот как я это вижу:

myCsv = open(filename, "r+").read().splitlines() #Opens the file and split it by lines
newCsv = [myCsv[0].split(',')] #Adding first line to new CSV
for i in range(1, len(myCsv)):  #looping through lines disregarding the first
     splitted = myCsv[i].split(',')  #split it by commas
     newCsv.append(splitted)  #append it
     for index, j in enumerate(splitted): #looping through comma separated values
           if j == newCsv[i-1][index]: #testing if equal to value of last row
                  newCsv[i-1][index-1] = newCsv[i-1][index] #changing values
                  newCsv[i][index-1] = newCsv[i][index]
newCsv = map(lambda x: ','.join(x), newCsv) #remapping it into a csv like string
open('newFile', 'w').write('\n'.join(newCsv)) #putting it into a new file

Обратите внимание, что это только пример того, как я это вижу, поэтому, возможно, в нем есть опечатки или ошибки (даже если я пытаюсь их не делать,но я здесь не для того, чтобы делать код для вас, поэтому я не проверял и не отлаживал).Вы должны сделать из этого свой собственный код

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