Pandas使用groupby的计数创建新列

我有一个如下所示的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')

但这不是我要寻找的。

任何指导表示赞赏

回答:

那不是新的专栏,而是新的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

我建议阅读docs的split-

apply-combine部分。

以上是 Pandas使用groupby的计数创建新列 的全部内容, 来源链接: utcz.com/qa/408552.html

回到顶部