Пустые значения в файле Excel из CSV (не только строки) - PullRequest
0 голосов
/ 05 марта 2012

В настоящее время я открываю файлы CSV в Excel с несколькими столбцами, где значения будут отображаться только при изменении числа.Например, данные могут фактически быть: 90,90,90,90,91.Но он появится только как 90 ,,,, 91.Мне бы очень хотелось, чтобы значения между ними были заполнены 90-ми.Есть ли в любом случае Python может помочь с этим?Я очень ценю вашу помощь!

Ответы [ 4 ]

2 голосов
/ 05 марта 2012

Одним из методов является использование функции генератора , которая берет строку данных и возвращает строку с заполненными значениями по мере необходимости с yield.

код

def fill_row(row):
    last_val = None
    for col in row:
        if(col != '' and col is not None):
            last_val = col
        yield last_val


inp_row = [90,'','','','',91,'',92]
filled_row = [x for x in fill_row(inp_row)]

print(filled_row)

выход

[90, 90, 90, 90, 90, 91, 91, 92]

Альтернативное решение

Решение, основанное исключительно на списках, выглядит следующим образом

def build_filled_row(row):
    last_val = None
    new_row = []
    for col in row:
        if(col != '' and col is not None):
            last_val = col
        new_row.append(last_val)
    return new_row

alternate_filled_row = build_filled_row(inp_row)

print(alternate_filled_row)
0 голосов
/ 05 марта 2012

короткое решение (один лайнер для преобразования ['90','','','','','91'] в ['90','90','90','90','90','91']):

 import csv
 spamReader = csv.reader(open('eggs.csv', 'rb'))
 for row in spamReader:
      a = map(lambda i : reduce(lambda y, z: z != "" and z or y, row[:i]), range(1,len(row)+1))
      print ",".join(a)
0 голосов
/ 05 марта 2012

Вы также можете сделать это полностью в Excel:

Выберите столбец (или любой другой диапазон, с которым вы работаете), затем перейдите в «Правка»> «Перейти» (Ctrl + G) и нажмите «Специальные».Проверьте пробелы и нажмите ОК.Это позволит выбрать только пустые ячейки в списке.Теперь введите клавишу =, затем стрелку вверх и ctrl-enter.

Это поместит формулу в каждую пустую ячейку, чтобы она равнялась ячейке над ней.Затем вы можете скопировать значения ^ paste только для того, чтобы избавиться от формул.

0 голосов
/ 05 марта 2012

Можете ли вы увидеть пропущенные значения при открытии CSV с WordPad? Если это так, то Python или любой другой язык сценариев также должен их видеть.

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