私はdf
パンダに次のようなデータフレームを持っています:
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
、第2レベルの最後の変更順序、および列のMultiIndexのフラット化です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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加