Pandas at vs. loc: в чем разница?


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

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

  • .loc может принимать несколько строк и столбцов в качестве входных аргументов.
  • .at может принимать только одну строку и один столбец в качестве входных аргументов.

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

import pandas as pd

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

#view DataFrame
print(df)

 team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7 H 28 4 12

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

В следующем коде показано, как использовать .loc для доступа к значению в DataFrame, расположенному в позиции индекса 0 столбца точек:

#select value located at index position 0 of the points column
df.loc[0, 'points']

18

Это возвращает значение 18 .

А следующий код показывает, как использовать .loc для доступа к строкам между значениями индекса 0 и 4 вместе с точками столбцов и вспомогательными элементами:

#select rows between index values 0 and 4 and columns 'points' and 'assists'
df.loc[0:4, ['points', 'assists']]

 points assists
0 18 5
1 22 7
2 19 7
3 14 9
4 14 12

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

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

В следующем коде показано, как использовать .at для доступа к значению в DataFrame, расположенному в позиции индекса 0 столбца точек:

#select value located at index position 0 of the points column
df.at [0, 'points']

18

Это возвращает значение 18 .

Однако предположим, что мы пытаемся использовать at для доступа к строкам между значениями индекса 0 и 4 вместе с точками и ассистентами столбцов:

#try to select rows between index values 0 and 4 and columns 'points' and 'assists'
df.at [0:4, ['points', 'assists']] 

TypeError : unhashable type: 'list'

Мы получаем ошибку, потому что функция at не может принимать несколько строк или несколько столбцов в качестве входных аргументов.

Вывод

Если вы хотите получить доступ только к одному значению в кадре данных pandas, функции loc и at будут работать нормально.

Однако, когда вы хотите получить доступ к группе строк и столбцов, это может сделать только функция loc .

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

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

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

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

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