透视没有数字列聚合的两列 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
我有一个输入如下的数据框:
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