熊猫使用groupby的计数创建新列

发布于 2021-01-29 15:06:11

我有一个如下所示的df:

id        item        color
01        truck       red
02        truck       red
03        car         black
04        truck       blue
05        car         black

我正在尝试创建一个如下所示的df:

item      color       count
truck     red          2
truck     blue         1
car       black        2

我试过了

df["count"] = df.groupby("item")["color"].transform('count')

但这不是我要寻找的。

任何指导表示赞赏

关注者
0
被浏览
82
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    那不是新的专栏,而是新的DataFrame:

    In [11]: df.groupby(["item", "color"]).count()
    Out[11]:
                 id
    item  color
    car   black   2
    truck blue    1
          red     2
    

    要获得想要的结果,请使用reset_index

    In [12]: df.groupby(["item", "color"])["id"].count().reset_index(name="count")
    Out[12]:
        item  color  count
    0    car  black      2
    1  truck   blue      1
    2  truck    red      2
    

    要获得“新列”,您可以使用transform:

    In [13]: df.groupby(["item", "color"])["id"].transform("count")
    Out[13]:
    0    2
    1    2
    2    2
    3    1
    4    2
    dtype: int64
    

    我建议阅读docssplit-
    apply-combine部分



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看