Подтвердить что ты не робот

Может ли 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]
4b9b3361

Ответ 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.

Вот мое решение:

  1. Во-первых, импортируйте панд как pd: import pandas as pd

  2. Прочитайте имя файла, используя pd.read_excel() (если у вас есть данные в электронной таблице), и установите для индекса значение "Местность", указав параметр index_col.

    df = pd.read_excel('testexcel.xlsx', index_col=0)

    На этом этапе, если вы получаете сообщение об ошибке "нет модуля с именем xlrd", установите его, используя pip install xlrd.

  3. Для визуального контроля прочитайте кадр данных, используя df.head(), который выведет следующий вывод sc

  4. Теперь вы можете извлечь значения нужных столбцов информационного кадра и распечатать его

    sc2