Метод last
Метод last применяется к объекту GroupBy
и возвращает последнюю строку для каждой группы.
Метод имеет параметр dropna, который управляет
поведением при работе с пропущенными значениями.
Если dropna равен True (значение по умолчанию),
то пропуски исключаются. Если же установить False,
то метод вернет первую попавшуюся строку, даже если
в ней есть пропуски.
Синтаксис
groupby_object.last(dropna=True)
Пример
Давайте сгруппируем таблицу по столбцу a
и получим последние строки для каждой группы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby('a')
res = grouped.last()
print(res)
Результат выполнения кода:
b
a
1 20
2 40
3 50
Пример
Теперь рассмотрим работу с пропущенными значениями.
По умолчанию dropna установлен в True,
поэтому строки с пропусками игнорируются:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 1, 1, 2, 2],
'b': [10, np.nan, 30, 40, np.nan]
})
grouped = df.groupby('a')
res = grouped.last()
print(res)
Результат выполнения кода:
b
a
1 30.0
2 40.0
Пример
Если же установить dropna в False,
то метод вернет последнюю строку группы даже с пропуском:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 1, 1, 2, 2],
'b': [10, np.nan, 30, 40, np.nan]
})
grouped = df.groupby('a')
res = grouped.last(dropna=False)
print(res)
Результат выполнения кода:
b
a
1 NaN
2 NaN
Пример
Метод last также можно применять к отдельным
колонкам после группировки:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [5, 6, 7, 8, 9],
'c': [10, 20, 30, 40, 50]
})
res = df.groupby('a')['b'].last()
print(res)
Результат выполнения кода:
a
1 6
2 8
3 9
Name: b, dtype: int64