选择 .groupby() 之外的列

Selecting columns outside of .groupby()

我正在处理 Python 中的一个数据集,该数据集包含三列:州 (ST)、城市 (City) 和证书数量 (CERT)。我必须找到我使用以下代码完成的每个州的最少证书数量:

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

但是这个returns只有状态和证书数量,当我还需要输出城市时。我需要每个州拥有最少证书数量的城市。当我运行下面的代码:

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

当我需要每个州的最小值以及该最小值所属城市时,我正在获取每个城市的最小值。有没有办法在 .groupby 函数之外包含城市列?

您可以使用 groupby + idxmin 获取最小值的索引,然后使用 loc:

过滤 df
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