У меня есть Excel с этими значениями в столбце A:
A
первый столбец
0 3971118279
0 397111859
2 397111859
2 790ZR64-60-0
3 790ZR64-60-0
4 V4B7506333
5 V4B7506333
Я читаю с pandas и объединить с openpyxl ячейку especifi c:
df1 = pd.read_excel(Cfijopath, index_col=None )
wb = load_workbook(Cfijopath)
ws = wb.active
for r in df1.index:
il = df1.iloc[r,0]
il = str(il)
if il == 'nan':
print('NAN')
else:
try:
index = df1.index[df1['first column'] == il].tolist()
fir = index[0]
sec = index[-1]
ws.merge_cells(f'A{fir}:A{sec}')
except:
print('error')
wb.save(Cfijopath)
Код работает, но при сравнении первое значение (3971118279) не совпадает. я попытался с:
index = df1.index[df1['first column'] == '3971118279'].tolist()
и не работает.
Это происходит со значениями, которые имеют только цифры, как я могу сравнить, чтобы получить индекс в этих случаях?
Спасибо.
Обновление. Окончательно протестировано только с openpyxl и получилось то же самое. В приведенном ниже коде есть «решение»:
wb = openpyxl.load_workbook(file, read_only=True)
ws = wb.active
for row in ws.iter_rows():
for cell in row:
val = str(cell.value)
if val == "3971118279":
print(ws.cell(row=cell.row, column=1).row)
print(type(cell.value))
print(type(val))
Вывод:
2
<class 'int'>
<class 'str'>
3
<class 'int'>
<class 'str'>
Проблема возникает из-за того, что значение ячейки только с числами считается «int». Решение преобразуется в "str" перед сравнением.