Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 7, 2016 11:47:13

druidich92
Зарегистрирован: 2016-03-05
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

Всем привет.
Пишу модуль для мат расчетов.
у меня возникла небольшая проблема:
вот считвыаю с ексель файла, построчно
соответственно получаю список
870.0, 880.0, 920.0, 890.0, 890.0, 920.0, 900.0, 840.0, 890.0, 940.0, 950.0, 980.0, 990.0, 920.0, 950.0, 960.0, 890.0, 870.0, 930.0, 890.0, 850.0, 910.0, 920.0, 840.0, 850.0, 880.0, ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ‘', ’', ''
как я понял, “ появляются из за того что строки разной длины.
как убрать ” ?

Отредактировано druidich92 (Сен. 7, 2016 11:47:49)

Офлайн

#2 Сен. 7, 2016 11:57:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

Код приведи и пример xls-файла.



Офлайн

#3 Сен. 7, 2016 12:18:00

druidich92
Зарегистрирован: 2016-03-05
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

py.user.next
Код приведи и пример xls-файла.
 import xlrd
import os
from collections import Counter
# import numpy as np
from collections import defaultdict
directory = 'excel Files'
excelfiles = os.listdir(directory)
for excel_file in excelfiles:
    rb = xlrd.open_workbook(directory + '\\' + excel_file)
    sheet = rb.sheet_by_index(0)
    for rownum in range(sheet.nrows):
        column = sheet.col_values(rownum)[1:]
        print(column)

Прикреплённый файлы:
attachment Сводная таблица.xlsx (54,9 KБ)

Офлайн

#4 Сен. 7, 2016 13:06:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

Она вообще выпадает, так как ты к колонкам применяешь нумерацию рядов (на 16 колонке выпадает). Явно что-то не то делаешь.
А пустые строки возникают, потому что колонки определяются по длине максимальной колонки. Если в колонке не хватает рядов, а они должны там быть, то эти ряды заполняются пустыми строками.

druidich92
вот считвыаю с ексель файла, построчно
Ну да, где там построчно, ты поколоночно считываешь. Надо col_values() переделать на row_values().

В общем, нужно каждый ряд, который содержит пустые строки, пропустить через функцию, которая пустые строки заменяет на нули.



Отредактировано py.user.next (Сен. 7, 2016 13:12:26)

Офлайн

#5 Сен. 7, 2016 13:32:35

druidich92
Зарегистрирован: 2016-03-05
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

скрипт подправил. теперь вроде норм выводит.

py.user.next
В общем, нужно каждый ряд, который содержит пустые строки, пропустить через функцию, которая пустые строки заменяет на нули.
увы, но мне нельзя на нули менять, это тестовый файл, могут быть данные и с нулями. мне эти данные еще обработать надо

Офлайн

#6 Сен. 7, 2016 19:54:23

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

а переопределить список исключив пустые элементы не вариант?

 a = [980.0, 990.0, 920.0, 950.0, 960.0, 890.0, 870.0, 930.0, 890.0, 850.0, 910.0, 920.0, 840.0, '', '', '', '', '', '', '']
a =[ x for x in a if x != '']
print(a)
[980.0, 990.0, 920.0, 950.0, 960.0, 890.0, 870.0, 930.0, 890.0, 850.0, 910.0, 920.0, 840.0]

Офлайн

#7 Сен. 7, 2016 22:01:13

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Удаление пустых значений списка

druidich92
соответственно получаю список
870.0, 880.0, 920.0
Это не список. Список выглядит так:
 [870.0, 880.0, 920.0]

druidich92
увы, но мне нельзя на нули менять, это тестовый файл, могут быть данные и с нулями
А что тогда означает убрать?
может
 [i for i in line if not i]
вообще pandas читает xls одной строкой и обрабатывает пустые позиции



Отредактировано doza_and (Сен. 7, 2016 22:02:39)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version