Pandas 如何取消熊猫数据帧的堆栈以获取计数的数目

Pandas 如何取消熊猫数据帧的堆栈以获取计数的数目,pandas,dataframe,pivot,Pandas,Dataframe,Pivot,我有下面的数据框。我正在尝试旋转数据帧 Department Manager_Rank Electronics A1 Electronics A2 Electronics A3 Electronics A4 Electronics B1 Electronics B2 Electronics B3 Electronics B4 Desired:

我有下面的数据框。我正在尝试旋转数据帧

Department          Manager_Rank   
Electronics         A1
Electronics         A2
Electronics         A3
Electronics         A4
Electronics         B1
Electronics         B2
Electronics         B3
Electronics         B4

Desired:
Department         A1-A4    B1-B4
Electronics        4          4

我们可以对秩的第一个字母进行切片,然后使用transform创建列键,并使用groupby size+unstack进行操作


我们可以对秩的第一个字母进行切片,然后使用transform创建列键,并使用groupby size+unstack进行操作

将transform与join和take一起使用,以构造用于pd.crosstab的列和值的系列

将transform与join和take一起使用,以构造用于pd.crosstab的列和值的系列


take的有趣用法:-当有多个部门时,这不起作用。strngely@gannu:您能分享一个导致它不起作用的示例吗?take的有趣用法:-当有多个部门时,它不起作用。strngely@gannu:你能分享一个导致它不起作用的样本吗?
g = df.groupby(df.Manager_Rank.str[0])['Manager_Rank']
s = df.groupby([df.Department, g.transform('first') + '_' + g.transform('last')]).size().unstack()
Out[196]: 
Manager_Rank  A1_A4  B1_B4
Department                
Electronics       4      4
cols = (df.groupby(df.Manager_Rank.str[0]).Manager_Rank
                                          .transform(lambda x: '-'.join(x.take([0,-1]))))

df_final = pd.crosstab(index=df.Department, columns=cols)

Out[506]:
Manager_Rank  A1-A4  B1-B4
Department
Electronics       4      4