熊猫使用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 个回答
-
那不是新的专栏,而是新的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部分。