Чтение .xlsx и доступ к значениям ячеек, но не по их позиции

1

это мой первый вопрос, так что извините заранее, если я сделаю некоторые объяснения ошибок.

Я кодирую в python 2.7. Я написал файл.xlsx(Excel) (возможно, это был.xls, на данный момент мне не нужен макрос + VBA). Файл Excel выглядит следующим образом:

Изображение 174551

Значения связаны с именем столбца и именем строки. Например, у меня есть столбец с именем "Кривая 1" и строка "Число экстремумов". Поэтому в этой ячейке я написал "1", если кривая 1 имеет 1 экстремум. Я хочу принять это значение, чтобы манипулировать им в скрипте python. Я знаю, что могу использовать модуль xlrd с открытой книгой и поместить значения строки 1 ("Число экстремумов") в список, а затем взять только первый (соответствующий столбцу "Кривая 1" и, следовательно, значение " 1 "Я хочу", но это не то, что я хотел бы иметь.

Вместо этого я хотел бы получить доступ к значению ячейки "1", просто передав скрипту python строки "Curve 1" и "Number of extremum", и python будет обращаться к ячейке на собрании двух и принять ее значение: "1". Является ли это возможным?

Я хотел бы сделать это, потому что файл Excel будет меняться со временем, и ячейки могут быть перемещены. Поэтому, если я попытаюсь получить значение ячейки с помощью "номера позиции" (например, строки 1, столбец 1), у меня возникнет проблема, если в этой позиции будет добавлен столбец или строка. Я бы не захотел снова редактировать скрипт python, если в файле xlsx есть какое-то редактирование.

Большое спасибо.

Теги:
pandas
excel
python-2.7

2 ответа

0
Лучший ответ

Pandas - популярная сторонняя библиотека для чтения/записи наборов данных. Вы можете использовать pd.DataFrame.at для эффективного скалярного доступа с помощью ярлыков строк и столбцов:

import pandas as pd

# read file
df = pd.read_excel('file.xlsx')

# extract value
val = df.at['N of extremum', 'Curve 1']
  • 0
    Спасибо ! Будет ли этот сценарий другим, если у нас будет .xls, .xlsm или .csv? Будет ли этот сценарий таким же, если бы он был на Python 3?
  • 0
    Вы должны взглянуть на Pandas I / O Tools для форматов, поддерживаемых изначально.
Показать ещё 1 комментарий
1

Это очень просто, используя Pandas. Чтобы получить ячейку, которую вы хотите, вы можете просто использовать loc который позволяет вам указать строку и столбец так, как вы хотите.

import pandas

df = pandas.read_excel('test.xlsx')
df.loc['N of extremum', 'Curve 1']
  • 0
    Большое спасибо !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню