Как закрепить два списка одинаковой длины, где сначала есть значения «Нет», в Python3?

Я выполняю итерацию через листы Excel и загрузку данных в dataframe. Идея заключалась в создании временного фрейма данных для текущего листа и добавлении его в конечный фрейм данных, который собирает все данные после каждой итерации (несколько файлов excel с несколькими листами внутри).

Дело в том, что эти листы excel имеют строки данных шириной более 100 столбцов, а часть столбцов имеет несколько индексов (например, диапазон месяцев> дней) с верхним индексом в объединенных ячейках.

Я разворачиваю ячейки, для ячеек, которые были объединены. Я пересылаю значение, которое оно имело, когда оно было объединено, и я читал значения обоих уровней индексов двум отдельным спискам: header_lv1 и header_lv2

Списки имеют одинаковую длину, но тот, который сделан из верхнего уровня индекса, имеет некоторые значения «Нет» в тех местах, где индекс был только одним уровнем в excel.

Я хочу закрепить эти списки в один список со значениями «lv1 – lv2», чтобы получить один индекс индекса для столбцов данных. На данный момент у меня есть:

header_lv1 = [ws.cell(row=2, column=i).value for i in range(1, sumaInCol + 1)] # read first level of indexes to list header_lv1.extend(['Typ', 'Typ']) # add two more columns header_collection.append(header_lv1) # collect header of each opened sheet for comparison header_lv2 = [ws.cell(row=3, column=i).value for i in range(1, sumaInCol + 1)] # read second level of indexes to list header_lv2.extend(['Produkt', 'MP/H']) # add two more columns header_collection.append(header_lv2) # collect header of each opened sheet for comparison mi = list(zip(header_lv1, header_lv2)) # create list of tuples ind = pd.Index([e[0] + '-' + e[1] for e in mi]) # want to create list with values made by concatenating tuples to string 

header_lv1

[Нет, Нет, Ничего, Нет, Нет, Нет, Нет, Нет, Нет, Нет, «Серпинь», «Серпинь», «Серпень», «Серпинь», «Врезьень», «Врезьень», «Врезьень», «Лобопад», «Липопад», «Листопад», «Грудзень», «Грудзьень», «Грудзень», «Грудзень», «Грудзень», , «Грудзень», «Стицень», «Стилинь», «Стилинь», «Стилинь», «Стилинь», «Лют», «Лют», «Лют», «Луть», «Марзец», «Марзец», Marzec ',' Marzec ',' Kwiecień ',' Kwiecień ',' Kwiecień ',' Kwiecień ',' Kwiecień ',' Maj ',' Maj ',' Maj ',' Maj ',' Czerwiec ',' Czerwiec ' , 'Czerwiec', 'Czerwiec', 'Lipiec', 'Lipiec', 'Lipiec', 'Lipiec', 'Lipiec', 'Sierpień', 'Sierpień', 'Sierpień', 'Sierpień', 'Wrzesień', ' «Вересень», «Врезьен», «Вересьен», «Пайдзиерник», «Пайдзиерник», «Пайдзиерник», «Пайдзиерник», «Пайдзиерник», «Листопад», «Листопад», «Листопад», «Листопад», «Листопад», , None, None, None, None, None, None, None, None, 'PODSUMOWANIE W TERMINACH PROMOCJI', 'PO DSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ',' PODSUMOWANIE W TERMINACH PROMOCJI ', None, None, None, None, None,' wyc ',' zam ',' wys ',' zre ', None, None, None, None, None, None, None, None, 'Typ', 'Typ']

header_lv2

['Miasto', 'Kanł komunikacji', 'Rodzaj', 'Typ', 'Opis / Nazwa', 'Komunikat', 'DMS', 'Rekrutacja', 'Nowa / stara oferta', 'Osoba odpowiedzialna', '01 -07 ', '08 -14', '15 -21 ', '22 -28', '29 -04 ', '05 -11', '12 -18 ', '19 -25', '26 -02 ', '03 -09', '10 -16 ', '17 -23', '24 -30 ', '31 -06', '07 -13 ', '14 -20', '21 -27 ', '28 -04 ', '05 -11', '12 -18 ', '19 -25', '26 -01 ', '02 -08', '09 -15 ', '16 -22', '23 -29 ', '30 -05', '06 -12 ', '13 -19', '20 -26 ', '27 -05', '06 -12 ', '13 -19', '20 -26 ', '27 -02', '03 -09 ', '10 -16', '17 -23 ', '24 -30', '01 -07 ', '08 -14', '15 -21 ', '22 -28 ', '29 -04', '05 -11 ', '12 -18', '19 -25 ', '26 -02', '03 -09 ', '10 -16', '17 -23 ', '24 -30', '31 -06 ', '07 -13', '14 -20 ', '21 -27', '28 -03 ', '04 -10', '11 -17 ', '18 -24', '25 -01 ', '02 -08', '09 -15 ', '16 -22', '23 -29 ', '30 -05', '06 -12 ', '13 -19 ', '20 -26', '27 -03 ',' liczba emisji ',' prasa – ilość modułów ',' WARTOŚĆ ',' cena jednostkowa (brutto) ',' do września ',' do października 'do listopada', 'do grudnia', 'do 09 stycznia', 'do 15 lutego', 'do 11 marca', 'do 29 kwietnia', 'do 31 maja ',' do 15 lipca ',' do 10 sierpnia ',' do 19 września ',' do 30 września ',' po 30 września ', None,' wartość kampanii ',' Status ',' Wartość oszczędności ',' Rodzaj budżetu ',' Wycenione ',' Zamówione ',' Wysłane ',' Zrealizowane ',' Start działania ',' Realizacja działania ',' Kolejność ',' ga: campaign ',' ga: medium ',' ga: source ',' Produkt ',' MP / H ']

К сожалению, я не знаю, как иметь дело с ситуацией, когда кортеж выглядит (например, «Нет», «Miasto»), который заканчивается следующим образом:

ind = pd.Index ([e [1] + '-' + e [0] для e in mi]) TypeError: должен быть str, а не NoneType

Начиная с python 3.6 вы можете использовать форматированные строковые литералы, иначе f-строки

ind = pd.Index([f"{e[0]} - {e[1]}" for e in mi])

Извините за беспокойство, я решил это, написав короткую функцию, которая меняет None для пустого srting '':

 def checkForNone(list): """Function is changing None values for empty strings""" for i in range(len(list)): if list[i] is None: list[i] = str('') else: continue 

и теперь просто передайте списки этой функции перед преобразованием их в списки кортежей:

 header_lv1 = [ws.cell(row=2, column=i).value for i in range(1, sumaInCol + 1)] header_lv1.extend(['Typ', 'Typ']) header_collection.append(header_lv1) checkForNone(header_lv1) header_lv2 = [ws.cell(row=3, column=i).value for i in range(1, sumaInCol + 1)] header_lv2.extend(['Produkt', 'MP/H']) header_collection.append(header_lv2) checkForNone(header_lv2) 
  • Почему zipfile.is_zipfile возвращает True в файле xlsx?
  • Хранить и получать доступ к файлам в структуре пакета XLSM
  • Как защитить паролем файл ZIP на Java?
  • При чтении файла .xlsx с помощью POI я получил сообщение об ошибке «Zip-файл закрыт»
  • Создание таблиц OpenDocument с помощью PHP
  • Как я могу указать версию zip для использования в bash?
  • Как сохранить и сгенерировать файл excel и сохранить на сервере
  • Как экспортировать данные из формы в файл XLSX на Remedy 9.1
  • Как сохранить каждый лист в книге Excel 2010 для разделения файлов CSV с помощью макроса?
  • Как проверить, доступен ли zip-файл?
  • R: импортировать выбранные xlsx из многих из одного ZIP-архива
  • Interesting Posts

    Как перечислять все программы, которые могут открывать XML-файл в виде обычного текста?

    Преобразование столбцов в строки при импорте .csv

    Не удалось расширить формулу VLOOKUP

    Чтобы получить список всего текста управления / заголовка решения Visual Studio

    Excel VBA: найдите параметр, скопируйте найденную строку в другую таблицу (вставляя начало в определенную ячейку)

    #VALUE ERROR из моей функции VBA

    В Powershell я вызываю SQL-запрос, который возвращает 10 таблиц … как я могу превратить каждую таблицу в свою собственную переменную?

    Excel: добавление меток в точки данных в диаграмме XY

    Office.js Чтение выделяет определенные строки

    Формулы динамического диапазона

    Как рассчитать квантили для нормального-обратного распределения Гаусса в Excel

    Таблица Excel для конвертера XML Vba помещает все мои строки данных в один тег в качестве атрибутов?

    Дублирование Удаление с использованием массива в vba

    Определение Если дата находится между другими датами в excel

    Изменение десятичного разделителя с формулой

    Давайте будем гением компьютера.