Хотел бы импортировать данные из электронной таблицы, в настоящее время использующей pyxl. Как лучше всего прочитать данные Excel и вставить их в 2D-массив. Это Numpy? Панды? Списки? Я новичок, и я изо всех сил пытаюсь вставить в такую переменную:
MaterialData [y, x] = данные из электронной таблицы, где y - строка, а x - столбец. Я использую цикл for для просмотра ячеек, но не могу найти способ поместить данные в массив.
for i in range(1, rows+1):
for j in range(1, 6):
col = sh.cell(i, j)
col1 = col.value
materialsList[i,j] = col1
Последняя строка явно ошибочна, но я хочу это сделать, если это имеет смысл! Файл Excel представляет собой список материалов, в каждом столбце которого указаны разные цены, и эта цена отображается в зависимости от того, что пользователь выбирает в программе. (ну, это очень упрощенная версия того, чего я хочу достичь). Часть данных в этом массиве будет отображаться в списке с помощью tkinter, в зависимости от флагов, установленных пользователем.
Любые советы приветствуются !!






Для работы с электронными таблицами использование pandas - лучший вариант, чем использование массива numpy. Pandas DataFrame - это двумерный массив numpy под капотом. Но хорошо иметь заголовки столбцов, индекс и т. д., Чтобы мы могли изменять эти параметры на лету. Pandas очень хорошо обрабатывает разнородные данные, с множеством встроенных функций, которые упростят работу.
способы преобразования фрейма данных pandas в его представление Numpy-array.
spreadsheet_np_array = df.as_matrix(columns=None)
OR
spreadsheet_np_array = df.values
OR
spreadsheet_np_array=np.asarray(your_data_frame_here).
pandas - очень хорошая библиотека, позволяющая разработчикам работать с файлами Excel. попробуйте следующий код в том же месте, что и файл Excel.
import pandas as pd
file_x = 'Scores.xlsx'
scores = pd.read_excel(file_x)
scores_dict = scores.to_dict()
rows = []
for row in scores_dict.values():
cols = []
for col in row.values():
cols.append(col)
rows.append(cols)
print(rows)
Это должно решить проблему
Спасибо за этот фрагмент кода. Я запустил его, но он дал мне длинный единый список всех элементов на листе Excel, а не массив. Что мне нужно, так это возможность просмотреть значение с помощью функции типа массива. Мне нужно знать, какое значение (столбец) содержит конкретная строка.
Конечным результатом будет список списков, эквивалентный двумерному массиву. каждый внутренний список представляет строки, и к любой из них можно получить доступ, используя его индекс. например, rows [1] даст вам вторую строку, а rows [1] [0] вернет первый столбец во второй строке. надеюсь, это поможет
Кажется, это хорошо работает в том смысле, что массив IS создан, немного поработает с ним и вернется к вам. Благодарю за помощь, спасибо!