透视没有数字列聚合的两列 DataFrame

Pivot a Two Column DataFrame With No Numeric Column To Aggregate On

我有一个输入如下的数据框:

df1 = pd.DataFrame(
     {'StoreId':
           [244, 391, 246, 246, 130, 130] , 'PackageStatus': ['IN TRANSIT','IN TRANSIT','IN TRANSIT', 'IN TRANSIT','IN TRANSIT','COLLECTED',]}   
    )

        StoreId     PackageStatus
0           244        IN TRANSIT
1           391        IN TRANSIT
2           246        IN TRANSIT
3           246        IN TRANSIT
4           130        IN TRANSIT
5           130        COLLECTED

我期望的输出看起来像这样,包状态转向列并且它们的计数成为值:

StoreId     IN TRANSIT       COLLECTED
244         1                0
391         1                0
246         2                0 
130         1                1 

我遇到的所有示例都带有第三个数字列,其中完成了一些聚合(总和、平均值、平均值等)。

当我尝试时

 df1.pivot_table(index='StoreId',values='PackageStatus', aggfunc='count')

我得到的是:

              PackageStatus
StoreId               
130                       2
244                       1
246                       2
391                       1

在我的例子中,我需要一个带有计数的简单 transpose/pivot。如何做到这一点?谢谢。

使用columns="PackageStatus"参数:

print(
    df1.pivot_table(
        index="StoreId", columns="PackageStatus", aggfunc="size", fill_value=0
    )
)

打印:

PackageStatus  COLLECTED  IN TRANSIT
StoreId                             
130                    1           1
244                    0           1
246                    0           2
391                    0           1

.reset_index():

print(
    df1.pivot_table(
        index="StoreId", columns="PackageStatus", aggfunc="size", fill_value=0
    )
    .reset_index()
    .rename_axis("", axis=1)
)

打印:

   StoreId  COLLECTED  IN TRANSIT
0      130          1           1
1      244          0           1
2      246          0           2
3      391          0           1