Python DataFrame:基于另一列的出现次数

Python DataFrame: count of occurances based on another column

我有一个 Python 团队数据框和他们取得的位置(1、2 或 3)

Team place
A 1
A 1
A 1
A 2
A 3
A 1
A 1
B 2
B 2

我想操纵 df 看起来像下面这样。所以这是一个团队获得每个名次的频率。

Team 1 2 3
A 5 1 1
B 0 2 0

您可以获得每个组的值计数,然后取消堆叠索引。剩下的就是为了得到你的确切输出。

(df.groupby('Team')['place']
   .value_counts()
   .unstack(fill_value=0)
   .reset_index()
   .rename_axis(None, axis=1)
) 

您可以使用 pandas.crosstab:

pd.crosstab(df['Team'], df['place'])

或简单的 groupby+sizeunstack:

(df.groupby(['Team', 'place']).size()
   .unstack('place', fill_value=0)
)

输出:

place  1  2  3
Team          
A      5  1  1
B      0  2  0
全部为列
(pd.crosstab(df['Team'], df['place'])
   .rename_axis(columns=None)
   .reset_index()
)

输出:

  Team  1  2  3
0   A   5  1  1
1   B   0  2  0