#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
получает первую строку в виде массива 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
объектов. Я отредактировал ответ, чтобы вы получили список значений ячеек для каждой строки