我有一个带有如下输入的数据框:
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/