Eu tenho um dataframe do Pandas que se parece com
Race_ID Date Student_ID Rank
1 1/1/2023 1 3
1 1/1/2023 2 8
1 1/1/2023 3 0
1 1/1/2023 4 4
2 11/9/2022 1 2
2 11/9/2022 2 3
2 11/9/2022 3 9
3 17/4/2022 5 0
3 17/4/2022 2 1
3 17/4/2022 3 2
3 17/4/2022 4 5
4 1/3/2022 1 6
4 1/3/2022 2 2
5 1/1/2021 1 0
5 1/1/2021 2 3
5 1/1/2021 3 1
E quero adicionar uma nova coluna min>0
cujo valor mínimo de Rank
groupby Race_ID
seja maior que 0, para que o resultado desejado seja semelhante
Race_ID Date Student_ID Rank min>0
1 1/1/2023 1 3 3
1 1/1/2023 2 8 3
1 1/1/2023 3 0 3
1 1/1/2023 4 4 3
2 11/9/2022 1 2 2
2 11/9/2022 2 3 2
2 11/9/2022 3 9 2
3 17/4/2022 5 0 1
3 17/4/2022 2 1 1
3 17/4/2022 3 2 1
3 17/4/2022 4 5 1
4 1/3/2022 1 6 2
4 1/3/2022 2 2 2
5 1/1/2021 1 0 1
5 1/1/2021 2 3 1
5 1/1/2021 3 1 1
Eu sei groupby
, transform('min')
mas não sei como incluir a condição> 0.
Filtre/mascare os valores e calcule o mínimo excluindo os valores indesejados.
Você tem várias opções.
Pré-mascarar e depois usar
groupby.transform
:Usando uma
transform
função personalizada:Ou com um filtro, uma agregação, para depois
map
transmitir de volta à forma original:Saída: