熊猫-具有多个输出的GroupBy

文森特·L

我有一个这样的数据框:

CITY     LOCATION     PRODUCT
CHICAGO  CHI1         A
CHICAGO  CHI1         B
CHICAGO  CHI4         C
NEWYORK  NY1          D
NEWYORK  NY2          E
NEWYORK  NY2          F
NEWYORK  NY2          G
ATLANTA  ATL1         H
ATLANTA  ATL1         I

我想基于同一分组获得2个不同的统计信息。分组为[CITY,LOCATION]。我希望能够获得每个位置的产品数量以及该位置的第一个产品的名称(按字母顺序)。

结果将是:

CITY     LOCATION     FIRST   COUNT
CHICAGO  CHI1         A       2
CHICAGO  CHI4         C       1
NEWYORK  NY1          D       1
NEWYORK  NY2          E       3
ATLANTA  ATL1         H       2

我设法做到这一点的唯一方法是:

gb = data.groupby(['CITY', 'LOCATION'])
df = gb.max().join(other=gb.count(), how='left', on=['CITY', 'LOCATION'], rsuffix='_r')

但是我敢肯定,有一种更好的方法可以重用相同的groupby()对象,而不必加入2个数据帧。

与SQL类似:

SELECT city, location, max(product), count(product) FROM table GROUP BY city, location

有更好的方法吗?

海盗

agg

df.groupby(['CITY', 'LOCATION'], sort=False).PRODUCT.agg(['min', 'count']).reset_index()

      CITY LOCATION min  count
0  CHICAGO     CHI1   A      2
1  CHICAGO     CHI4   C      1
2  NEWYORK      NY1   D      1
3  NEWYORK      NY2   E      3
4  ATLANTA     ATL1   H      2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章