代码之家  ›  专栏  ›  技术社区  ›  amatof

选择外部的列。groupby()

  •  0
  • amatof  · 技术社区  · 4 年前

    我正在使用Python中的一个数据集,它有三列:state(ST)、city(city)和number of certificates(CERT)。我必须找到每个州的最低证书数量,我使用以下代码进行了这些操作:

    df.groupby(["ST"])["CERT"].min()
    

    但当我还需要输出城市时,它只返回州和证书数量。我需要每个州有最低数量证书的城市。当我运行以下代码时:

    df.groupby(["ST", "City"])["CERT"].min()
    

    我得到了每个城市的最小值,当我需要最小值所属城市的每个州的最小值时。有没有一种方法可以把城市列在城市之外。分组功能?

    1 回复  |  直到 4 年前
        1
  •  2
  •   enke    4 年前

    你可以用 groupby + idxmin 要获取最小值的索引,请进行筛选 df 使用它 loc :

    index_of_min_certificates = df.groupby('ST')['CERT'].idxmin()
    out = df.loc[index_of_min_certificates]
    

    例如 df 如下所示:

       ST    City  CERT
    0  CA      LA     0
    1  CA      SF     1
    2  NY     NYC     2
    3  NY  Albany     3
    

    上述代码生成:

       ST City  CERT
    0  CA   LA     0
    2  NY  NYC     2