pandas 我可以计算一列的唯一值,并为每个唯一值添加单独列的计数吗?最好为每个主题单独添加?[duplicate]

xpszyzbs  于 2023-03-16  发布在  其他
关注(0)|答案(2)|浏览(93)

此问题在此处已有答案

How can I pivot a dataframe?(5个答案)
3天前关闭。
例如,我的数据格式如下:

Group Product
0      1       A
1      1       A
2      1       B
3      2       A
4      2       B
5      2       C
6      3       A
7      3       C
8      3       C

我想实现的是让它像下面这样:

Group  A  B  C
0      1  2  1  0
1      2  1  1  1
2      3  1  0  1

其中A、B和C列的值分别是它们在给定组中的出现次数。
我怎样才能用Pandas来达到这个目的呢?
我尝试使用groupby和count,代码如下

df.groupby(['Group','Product'])['Product'].count()

这为我提供了我想要的结果,但是我不知道如何将它们放入每个计数的单独列中。

qij5mzcb

qij5mzcb1#

您可以使用pd.crosstab

x = pd.crosstab(df['Group'], df['Product']).reset_index()
x.columns.name = None

print(x)

图纸:

Group  A  B  C
0      1  2  1  0
1      2  1  1  1
2      3  1  0  2
nbnkbykc

nbnkbykc2#

Pandas pivot_table应该可以做到这一点。

pivot_df = pd.pivot_table(df, index='Group', columns='Product', aggfunc=len, fill_value=0)

pivot_df = pivot_df.reset_index()
pivot_df.columns.name = None

print(pivot_df)

相关问题