python-3.x - 在没有要聚合的数字列的情况下透视两列 DataFrame

标签 python-3.x pandas dataframe pivot-table

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

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

就我而言,我需要一个带有计数的简单转置/旋转。如何做到这一点?谢谢。

最佳答案

使用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

关于python-3.x - 在没有要聚合的数字列的情况下透视两列 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67340781/

相关文章:

python - Pandas:应用一个以列和变量作为参数的函数

FTP文件传输期间Python数据通道超时

python - pandas:cumsum 忽略前两行

Python 过滤器/最大组合 - 检查空迭代器

python - pandas ExcelWriter 从右到左写入工作表

python - Pandas - 用 Nan 替换重复项并保持行

html - 显示以屏幕宽度 [Shiny] 换行的值向量

r - 每个时间步的平均值

python - 理解 scipy.signal.spectrogram() 的输出

python - 如何将字符串中的每个其他字符大写