TransWikia.com

Как можно избавиться от ошибки из-за пустых ячеек Excel файла?

Stack Overflow на русском Asked on December 9, 2021

Код:

def find_cell_next_to_val(filename, val, **kwargs):
    df = pd.read_excel(filename, header=None, dtype=str, **kwargs)
    df = df.apply(lambda col: col.str.strip())
    rows, cols = np.where(df == str(val).strip())
    if len(rows) == 0:
        return None
    row, col = rows[0], cols[0]
    if col + 1 > df.shape[1]:
        return None
    col_idx = df.iloc[row, col+1:].first_valid_index()
    try:
        return df.iat[row, col_idx]
    except KeyError:
        return None

читает данные файлов Excel, однако если некоторая интересующая нас ячейка ссылается на пустоту то эта функция возвращает ошибку:

ValueError: iAt based indexing can only have integer indexers

Как можно избавиться от этой ошибки?

Ссылка на файл с исходными данными.

One Answer

Попробуйте так:

def find_cell_next_to_val(filename, val, **kwargs):
    df = pd.read_excel(filename, header=None, dtype=str, **kwargs)
    df = df.apply(lambda col: col.str.strip())
    rows, cols = np.where(df == str(val).strip())
    if len(rows) == 0:
        return None
    row, col = rows[0], cols[0]
    if col + 1 > df.shape[1]:
        return None
    col_idx = df.iloc[row, col+1:].first_valid_index()
    try:
        return df.iat[row, col_idx]
    except (KeyError, ValueError):
        return None

Answered by MaxU on December 9, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP