Python / Pandas: проблема с ячейками Excel, которые кажутся пустыми, но не пустыми - PullRequest
0 голосов
/ 25 марта 2020

Я использую приведенный ниже код. Все работает, за исключением того, что после выполнения последней строки я получаю «TypeError: неподдерживаемый тип (ы) операндов для /: 'str' и 'int'".

Проблема, как выясняется, связана с конкретная проблема с ячейкой Excel, которая, кажется, распространена в более чем одном из файлов +80, которые я читаю в Python. Иногда некоторые ячейки в файлах Excel, которые я читаю, считаются пустыми в Excel, но не являются пустыми (это можно проверить в Excel с помощью функции ISBLANK ()). Чтение и импорт пустых ячеек не проблема, но проблема импорта / чтения пустых ячеек, которые пустые, чтобы быть пустыми, но не зарегистрированы как таковые в Excel.

Открытие файла Excel и выбор и удаление ячейки вручную (которая выглядела пустой, но каким-то образом регистрировалась как непустая в Excel), похоже, помогает. Однако я не хочу открывать каждый файл Excel и начинать выделять и удалять пустые ячейки для подтверждения. Также обратите внимание, что дело не в том, что рассматриваемая ячейка Excel просто содержит пробел (ie, ""), а не в том, что проблема, похоже, в чем-то другом.

Как можно справиться с это с Python / Pandas? Я перепробовал все решения в этом потоке, но ничего не получалось.

import openpyxl 
import os
import pandas as pd
import time
from openpyxl import load_workbook

os.chdir('C://Files//Research')
directory = os.listdir('C://Files//Research') 

df = pd.DataFrame()

start = time.time()
for file in directory:      
    if os.path.isfile(file):

        file_name = file
        workbook = load_workbook(filename = file, data_only=True)

        sheet1 = workbook['3. ISO']
        c5 = sheet1['C5'].value 
        c6 = sheet1['C6'].value

        sheet11 = workbook['4. Survey Overview']
        c10 = sheet11['C10'].value 
        c11 = sheet11['C11'].value 

        df = df.append(pd.DataFrame({
                "File_name":file, "ISO":c5, "Output":c6,
                "Nat":c10, "Urb": c11 
                }, index=[0]))

end = time.time()
print(end - start)

df['Output %'] = 100* (df['Output'] / df['Nat'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...