Как использовать строку в качестве имени столбца в панде - PullRequest
0 голосов
/ 09 октября 2019

У меня есть книга Excel, с которой я читаю данные и с ними что-то делаю. В книге Excel некоторые заголовки столбцов являются числами, и я не знаю, как их использовать в пандах. Мне также не разрешается изменять заголовки столбцов в Excel (для целей данного проекта).

В этом случае заголовки столбцов все одинаковы (например, 2008, 2008 и 2008) ивсе числа. Это имеет смысл в контексте моего проекта, но вводит в заблуждение панд и меня. Они различаются, потому что строка над ними в книге Excel содержит больше информации.

filename = 'myfile.xlsx'
data = pd.read_excel(myfile, skiprows=8)

print("Column Headings")
print(data.columns)

Результаты печати заголовков столбцов (сокращенный список):

Index([2008, '2008.1', '2008.2'], dtype='object')

Теперь мне нужно использоватьэти имена столбцов, чтобы получить данные в этих столбцах ...

provider_name = 'example_name'
subset_by_provider = data.loc[data['Provider'] == provider_name]

#the error is here. 2008 is the column name
data_2008 = subset_by_provider.2008.tolist() 

Как я указал выше, ошибка находится в последней строке кода. Я читаю данные в список. 2008 (в виде целого числа) и «2008.1» - это имена столбцов в моей таблице Excel. Но я получаю синтаксическую ошибку.

#Doesn't work
data_2008 = subset_by_provider.2008.tolist()

#Doesn't work
data_2008 = subset_by_provider.'2008.1'.tolist()

#Does work
data_2008 = subset_by_provider.i2008.tolist()

Во 2-й строке я изменил имя столбца в таблице Excel с 2008 на i2008, просто чтобы доказать свою точку зрения. Однако на практике мне не разрешено это делать.

Как прочитать название столбца 2008 или '2008.1'?

1 Ответ

0 голосов
/ 09 октября 2019

Как отмечено в комментариях выше. Решение:

data_2008 = subset_by_provider[2008].tolist()

or

data_2008 = subset_by_provider['2008.1'].tolist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...