Может ли pandas использовать столбец как индекс?
У меня есть таблица вроде этого:
Locality 2005 2006 2007 2008 2009
ABBOTSFORD 427000 448000 602500 600000 638500
ABERFELDIE 534000 600000 735000 710000 775000
AIREYS INLET459000 440000 430000 517500 512500
Я не хочу вручную менять столбец с помощью строки. Возможно ли использовать pandas данные для чтения в списке следующим образом:
data['ABBOTSFORD']=[427000,448000,602500,600000,638500]
data['ABERFELDIE']=[534000,600000,735000,710000,775000]
data['AIREYS INLET']=[459000,440000,430000,517500,512500]
Ответы
Ответ 1
Да, с set_index вы можете сделать Locality
свой индекс строки.
data.set_index('Locality', inplace=True)
Если inplace=True
не предоставляется, set_index
возвращает измененный файл данных в качестве результата.
Пример:
> import pandas as pd
> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
['ABERFELDIE', 534000, 600000]],
columns=['Locality', 2005, 2006])
> df
Locality 2005 2006
0 ABBOTSFORD 427000 448000
1 ABERFELDIE 534000 600000
> df.set_index('Locality', inplace=True)
> df
2005 2006
Locality
ABBOTSFORD 427000 448000
ABERFELDIE 534000 600000
> df.loc['ABBOTSFORD']
2005 427000
2006 448000
Name: ABBOTSFORD, dtype: int64
> df.loc['ABBOTSFORD'][2005]
427000
> df.loc['ABBOTSFORD'].values
array([427000, 448000])
> df.loc['ABBOTSFORD'].tolist()
[427000, 448000]
Ответ 2
Вы можете изменить индекс, как описано уже, используя set_index
.
Вам не нужно вручную менять строки с помощью столбцов, существует метод транспонирования (data.T
) в pandas, который делает это для вас:
> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
['ABERFELDIE', 534000, 600000]],
columns=['Locality', 2005, 2006])
> newdf = df.set_index('Locality').T
> newdf
Locality ABBOTSFORD ABERFELDIE
2005 427000 534000
2006 448000 600000
то вы можете получить значения столбца dataframe и преобразовать их в список:
> newdf['ABBOTSFORD'].values.tolist()
[427000, 448000]
Ответ 3
Вы можете установить индекс столбца с помощью параметра index_col, доступного при чтении из электронной таблицы в Pandas.
Вот мое решение:
Во-первых, импортируйте панд как pd:
import pandas as pd
Прочитайте имя файла, используя pd.read_excel() (если у вас есть данные в электронной таблице), и установите для индекса значение "Местность", указав параметр index_col.
df = pd.read_excel('testexcel.xlsx', index_col=0)
На этом этапе, если вы получаете сообщение об ошибке "нет модуля с именем xlrd", установите его, используя pip install xlrd
.
Для визуального контроля прочитайте кадр данных, используя df.head()
, который выведет следующий вывод
![sc]()
Теперь вы можете извлечь значения нужных столбцов информационного кадра и распечатать его
![sc2]()