我有一个 Pandas 数据框,看起来像
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
我想添加一个新列,它是groupby大于 0min>0
的最小值,所以期望的结果看起来像Rank
Race_ID
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
我知道groupby
,transform('min')
但我不知道如何包含条件 >0。
过滤/屏蔽值并计算排除不需要的值的最小值。
您有多种选择。
预屏蔽,然后使用
groupby.transform
:使用自定义
transform
函数:或者使用过滤器、聚合,然后
map
广播回原始形状:输出: