Вы можете написать простую функцию для преобразования из индекса Excel в числовой индекс:
import regex as re
def index_transform(excel_index):
match = re.match(r"^([a-z]+)(\d+)$", excel_index.lower())
if not match:
raise ValueError("Invalid index")
x_cell = -1
for idx, char in enumerate(match.group(1)[::-1]):
x_cell += (26 ** idx) * (ord(char) - 96) # ord('a') == 97
y_cell = int(match.group(2)) - 1
return y_cell, x_cell
# Usage
df.iloc[*index_transform("A1")] # The * unpacks the returned tuple
# Example outputs
>>> index_transform("A1")
(0, 0)
>>> index_transform("E1")
(0, 4)
>>> index_transform("A5")
(4, 0)
>>> index_transform("e5")
(4, 4)
>>> index_transform("AA27")
(26, 26)
>>> index_transform("coffee1337")
(1336, 42608414)