Чтение матрицы из Excel с пандами дает 2 разных вывода в зависимости от используемого ПК - PullRequest
0 голосов
/ 11 марта 2019

В Excel хранится следующая матрица:

Matrix Excel

Я прочитал эту матрицу со следующим кодом:

def load_matrix(path):
    """
    Load the matrix file.
    Returns a numpy array.
    """
    xl= pd.ExcelFile(path)
    matrix = xl.parse('Matrix')
    return matrix

На большинстве ПК (называемых ПК1) вывод:

* +1012 *PC1 output

Это желаемый вывод с именами столбцов / строк в качестве индекса. Однако на втором ПК (называемом ПК2) вывод:

PC2 output

Это проблема для меня, так как код затем обращается к данным следующим образом, который работает только с выводом с ПК1.

Mat.at["E1", "E1"]

Сведения о версии:

PC1:

  • Python 3.7.1
  • xlrd 1.2.0
  • xlsxwriter 1.1.4
  • шпион 3.3.3
  • Панды 0.23.4
  • Numpy 1.16.1

ПК2:

  • Python 3.7.2
  • xlrd 1.2.0
  • xlsxwriter 1.1.5
  • шпион 3.3.3
  • Панды 0.24.1
  • Numpy 1.16.1

Я предполагаю, что небольшая разница в версиях приводит к проблеме. Как я могу изменить код, чтобы сделать его совместимым с обоими, и выводить вывод с ПК1?

Спасибо:)

1 Ответ

1 голос
/ 11 марта 2019

Правильный ответ здесь, так как тест работал:)

В принципе, ExcelFile.parse принимает те же параметры, что и метод .read_excel , вы можете увидеть документациюдля точных деталей.

Не уверен, почему столбец индекса читается по-разному на разных компьютерах (может быть, в библиотеках или, может быть, даже в версиях Python), но лучший способ доказать это в будущем - явно установить параметр index_col.

тогда это становится:

xl= pd.ExcelFile(path).parse(index_col=0)

или:

xl = pd.read_excel(matrix_path, index_col=0)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...