当其他列为空时,如何获取列的最小值?

How can I get the minimum value of a column when other column is null?

这是一个非常直接的问题,假设我有:

id        grade     coldate
123       100       2020-01-01
444       45        2020-02-01
NULL      55        2020-03-01
NULL      70        2020-04-01

我想要最差成绩,只考虑id为null的情况。所以即使444的等级比第三行的id低,我期望的输出是55。如果可能的话,我想把行号也带上。

有什么想法吗?一个简单的过滤器是行不通的,因为这不像我在寻找满足两个条件的东西。我考虑过编写一个函数,但工作量太大(我会先列出所有空值并存储在列表中,然后从数据框中获取最小值,仅过滤列表中的值)。

这个returns一个数据框,一行满足给定条件

df1=df[df['id']==NULL]
df1[df1['grade']==df1['grade'].min()]

试试这条线:

df.loc[df['id'].isna(), 'grade'].min()

输出:

55

loc 与布尔系列一起使用,其中列 'id'、isna 并获取 min 值 列,'grade'.