Pandas使用groupby的计数创建新列
我有一个如下所示的df:
id item color01 truck red
02 truck red
03 car black
04 truck blue
05 car black
我正在尝试创建一个如下所示的df:
item color counttruck 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