Как импортировать определенную строку из Excel в python в виде массива?

#python #excel

#python #excel

Вопрос:

У меня есть файл Excel с четырьмя строками данных. Теперь я хочу импортировать каждую из этих строк в python в виде четырех отдельных массивов, потому что мне нужно выполнить с ней некоторые вычисления.

Я пробовал с pandas, но возникли некоторые трудности с выбором специальной строки в Excel и преобразованием ее в массив…

 data = pd.read_excel(r'link')
  

Комментарии:

1. Что не так с вашим текущим подходом? Можете ли вы предоставить некоторые примеры ввода и вывода? Как только у вас это будет в одном фрейме данных, вы можете просто проиндексировать каждую строку, чтобы получить серию pandas этой строки

2. Вы почти на месте 🙂 Теперь, чтобы выбрать только один массив, вы делаете my_array = data["column name"] и все!

3. Нет, это не работает…… Когда я пишу, например, my_array = data[1], я получаю сообщение об ошибке KeyError: 1

4. @Gabriel98 вы получаете сообщение об ошибке с my_array = data.loc[1] ?

Ответ №1:

 import pandas as pd 

data = pd.read_excel(r'Book1.xlsx', header=None)

# Index desired row, here is the first, row `0`     
print(data.loc[0].values)

# or python list
print(data.loc[0].values.tolist())
  

используя эти фиктивные данные Excel

фиктивные данные Excel

получает первую строку в виде массива numpy:

 [u'a' u'b' u'c' u'd']
  

или список python («массив»):

 [u'a', u'b', u'c', u'd']
  

Ответ №2:

Попробуйте использовать:

 data = []
with open (your_file_filepath, "r") as file:
    for line in file:
        data.append(line)
  

Затем вы получаете массив из массивов строк в вашем файле.

Вместо цикла for вы также можете написать:

 [data.append(line) for line in file]
  

Комментарии:

1. Что вы имеете в виду под your_file? Путь к файлу?

Ответ №3:

Вы можете использовать xlrd ( pip install xlrd ):

 import xlrd
with xlrd.open_workbook('file.xlsx') as wb:
    sheet = wb.sheet_by_index(0)
    rows = []
    for row in sheet.get_rows():
        rows.append([cell.value for cell in row])
  

Теперь rows будут содержаться ваши 4 отдельных массива (списки на python) в виде: row[0] row[1] row[2] row[3]

Комментарии:

1. Я получаю сообщение об ошибке: NameError: имя ‘load_workbook’ не определено

2. Спасибо. Это работает. Но еще один вопрос: я не могу вычислить с помощью этих массивов, потому что элементами строки являются «число: 55», а не только число

3. Это потому, что каждая строка представляет собой список xlrd.Cell объектов. Я отредактировал ответ, чтобы вы получили список значений ячеек для каждой строки