перестановка строк csv, а также сохранение порядка значений, python

#python #csv

#python #csv

Вопрос:

У меня есть файл csv, который выглядит следующим образом:

Текущий файл csv

Хотелось бы создать новый csv-файл, который выглядит следующим образом:

Требуемый файл csv

Мои первые мысли о:

 r1= []
r2 = []
with open('loadba1.csv', "r") as csv_file:
       
      data = csv.reader(csv_file, delimiter=',')
             f or rows in data:
               r1.append(rows[0])
               r2.append(rows[1])
  

r1 will give - TRUE

r2 will give - 'L_602356450160818331', 'wan1'

Затем снова выполните цикл r2, чтобы извлечь каждое значение и «как-то» объединить.

Я также не могу потерять отношение значений, например, TRUE — wan1 — L_602356450160818331

Я не уверен в подходе, который я должен принять. Пожалуйста, сообщите.

Комментарии:

1. Было бы полезно, если бы вы предоставили данные в виде текста, а не изображений.

2. Как вы узнаете, когда запускается новый элемент — всегда ли это будет две строки или вам нужно объединить все строки с пустым первым столбцом?

Ответ №1:

То, что вы, вероятно, хотите сделать, это использовать ручной while цикл, а не for :

 with open('loadba1.csv', "r") as csv_file:
    data = csv.reader(csv_file, delimiter=',')
    while True:
        try:
            load_bal, interface = next(data)
        except StopIteration:
            break  # end of file
        try:
            _, the_id = next(data)
        except StopIteration:
            raise ValueError("No ID row for %s" % interface)

        ... # write out (load_bal, interface, the_id)
  

Ответ №2:

 import pandas as pd
df = pd.Dataframe("csv1.csv", index = False)
result = []
Id, LoadBal, Interface = "","",""
for index, row in df.iterrows():
    for col, val in row.iteritems():
        if col == 0 and val:
            LoadBal = val
        elif LoadBal:
            Interface = val
            result.append({"LoadBal": LoadBal, "Interface": Interface,"Id": Id })
            Id, LoadBal, Interface = "","",""
        elif col!=0:
            Id = val
result = pd.DataFrame(result)
result.to_csv("csv2.csv")