Как записать весь столбец Excel в переменную Python?
Немного поясню , необходимо чтобы циклом скрипт проходил по всей таблице и выводил значение строки в две переменные, образец данных:
| name | old |
|---|---|
| Иван | 23 |
| Михаил | 31 |
К примеру, вывод:
а = Иван, b=23;
Подскажите пожалуйста по коду, как это можно реализовать? код, который сейчас есть
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter, column_index_from_string
from openpyxl.worksheet import worksheet
from requests.auth import HTTPBasicAuth
wb = load_workbook(
"path/excell_name.xlsx")
# get_sheet_names() - выводит список с названием листов,
sheets_name = wb.get_sheet_names()
for k in range(1):
# for k in range(len(sheets_name)):
sheet = wb[sheets_name[k]]
for i in range(2, wb.max_column): # беру со второй так как в первой идут названия столбцов
name = sheet.cell(row=i, column=1).value
old = sheet.cell(row=i, column=2).value
a = [name]
b = [old]
Ответы (2 шт):
- Не "old", а "age".
- А почему бы вам не раскрыть страшную тайну, и не показать бы нам, что конкретно вы понимаете под "таблицей". Потому как таблицу MS EXCEL можно преобразовать и таблицу (DataFrame) Pandas, и в объект типа dict, и в элементарный список списков.
- Поскольку никаких других подсказок, кроме тега "python" вы желающим вам помочь не оставили, будем исходить из предоставления вашей "таблицы" в виде списка
:
tb=[['Иван', 23], ['Михаил', 32]]
for person in tb:
a=person[0]
b=person[1]
print (a,b)
Результат:
Иван 23
Михаил 32
Если же вдруг вам надо работать с Таблицами в Pandas, тогда вот так
dbl=pd.DataFrame({'name':['Иван','Михаил'], 'age':[23,32]})
for i in range(len(dbl)):
a=dbl.iloc[i]['name']
b=dbl.iloc[i]['age']
print (a,b)
так
for i,person in dbl.iterrows():
a=person[0]
b=person[1]
print (a,b)
или так
for person in dbl.itertuples():
a=person.name
b=person.age
print(a,b)
Результат во всех случаях одинаков:
Иван 23
Михаил 32
P.S. После исправления кода ТС, могу только добавить и свой ответ. Чтение из csv файла в DataFrame выполняется командой
pd.read_csv('.....csv')
а чтение из xls или xlsx в DataFrame выполняется командой
pd.read_excel('.....xlsx')
Эта функция через параметр sheet_name позволяет работать и с многостраничными книгами EXCEL
я не знаком с библиотекой openpyxl, поэтому предложу решение в лоб, которое выполнит поставленную задачу, но к расширению не готова, думаю все необходимое по формату сможете скорректировать самостоятельно
import openpyxl
wb = openpyxl.load_workbook(filename='filename.xlsx')
sheet_names = wb.get_sheet_names() # имена страниц
data = wb[sheet_names[0]].values # все данные которые есть на странице
lst = []
for row in range(1,len(data)):
a, b = None, None
for column in range(0,2):# берем только первые два столбца
if column%2==0:
a = data[row][column]
else:
b = data[row][column]
if a and b:
lst.append((a,b))
print(lst)