Pandas loc против iloc: в чем разница?


Когда дело доходит до выбора строк и столбцов кадра данных pandas, loc и iloc — это две часто используемые функции.

Вот тонкая разница между двумя функциями:

  • loc выбирает строки и столбцы с определенными метками
  • iloc выбирает строки и столбцы в определенных целочисленных позициях

В следующих примерах показано, как использовать каждую функцию на практике.

Пример 1: Как использовать loc в Pandas

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'points': [5, 7, 7, 9, 12, 9, 9, 4],
 'assists': [11, 8, 10, 6, 6, 5, 9, 12]},
 index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

#view DataFrame
df

 team points assists
A A 5 11
B A 7 8
C A 7 10
D A 9 6
E B 12 6
F B 9 5
G B 9 9
H B 4 12

Мы можем использовать loc для выбора определенных строк DataFrame на основе их индексных меток:

#select rows with index labels 'E' and 'F'
df.loc[['E', 'F']]

 team points assists
E B 12 6
F B 9 5

Мы можем использовать loc для выбора определенных строк и определенных столбцов DataFrame на основе их меток:

#select 'E' and 'F' rows and 'team' and 'assists' columns
df.loc[['E', 'F'], ['team', 'assists']]

 team assists
E B 12
F B 9

Мы можем использовать loc с аргументом : для выбора диапазонов строк и столбцов на основе их меток:

#select 'E' and 'F' rows and 'team' and 'assists' columns
df.loc['E ': , :' assists']

 team points assists
E B 12 6
F B 9 5
G B 9 9
H B 4 12

Пример 2: Как использовать iloc в Pandas

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'points': [5, 7, 7, 9, 12, 9, 9, 4],
 'assists': [11, 8, 10, 6, 6, 5, 9, 12]},
 index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

#view DataFrame
df

 team points assists
A A 5 11
B A 7 8
C A 7 10
D A 9 6
E B 12 6
F B 9 5
G B 9 9
H B 4 12

Мы можем использовать iloc для выбора определенных строк DataFrame на основе их целочисленной позиции:

#select rows in index positions 4 through 6 (not including 6)
df.iloc [4:6]

 team points assists
E B 12 6
F B 9 5

Мы можем использовать iloc для выбора определенных строк и определенных столбцов DataFrame на основе их позиций в индексе:

#select rows in range 4 through 6 and columns in range 0 through 2
df.iloc [4:6, 0:2]

 team assists
E B 12
F B 9

Мы можем использовать loc с аргументом : для выбора диапазонов строк и столбцов на основе их меток:

#select rows from 4 through end of rows and columns up to third column
df.iloc [4: , :3]

 team points assists
E B 12 6
F B 9 5
G B 9 9
H B 4 12

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как выбрать строки по нескольким условиям, используя Pandas loc
Как выбрать строки на основе значений столбца в Pandas
Как выбрать строки по индексу в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.