【问题标题】:How can I get the minimum value of a column when other column is null?当其他列为空时,如何获取列的最小值?
【发布时间】:2020-12-10 19:10:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: pandas dataframe filter missing-data


    【解决方案1】:

    试试这个oneliner:

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

    输出:

    55
    

    使用 loc 和布尔系列 where column, 'id', isna and get the min value for 列,“等级”。

    【讨论】:

      【解决方案2】:

      这将返回一个数据框,其中一行满足给定条件

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        • 2017-10-11
        • 1970-01-01
        相关资源
        最近更新 更多