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
Как можно избавиться от этой ошибки?
Ссылка на файл с исходными данными.
Попробуйте так:
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP