我df
在Pandas中有一个数据框,看起来像这样:
stores product discount
Westminster 102141 T
Westminster 102142 F
City of London 102141 T
City of London 102142 F
City of London 102143 T
最后,我想得到一个像这样的数据集:
stores product_1 discount_1 product_2 discount_2 product_3 discount_3
Westminster 102141 T 102143 F
City of London 102141 T 102143 F 102143 T
如何在熊猫中做到这一点?
我认为这是stores
专栏文章的枢纽,但有多个。还是这是“解开”而不是“枢轴”?
我试过了:
df.pivot("stores", ["product", "discount"], ["product", "discount"])
但是我明白了TypeError: MultiIndex.name must be a hashable type
。
使用DataFrame.unstack
的重塑,只有必要时创建计数器通过GroupBy.cumcount
,第二级上次更改排序和按列扁平化多指标map
:
df = (df.set_index(['stores', df.groupby('stores').cumcount().add(1)])
.unstack()
.sort_index(axis=1, level=1))
df.columns = df.columns.map('{0[0]}_{0[1]}'.format)
df = df.reset_index()
print (df)
stores discount_1 product_1 discount_2 product_2 discount_3 \
0 City of London T 102141.0 F 102142.0 T
1 Westminster T 102141.0 F 102142.0 NaN
product_3
0 102143.0
1 NaN