質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%

Q&A

解決済

1回答

1033閲覧

Pandasのpivot_tableでValuesに複数項目を指定した場合の表示について

horio

総合スコア13

0グッド

0クリップ

投稿2022/04/27 23:28

Python Flaskで簡易的なWEBシステムを構築しています。
DBから抽出したデータを集計する際に、Pandasのpivot_tableを使用していますが、以下のような表示に変更する事が可能かを教示頂きたいです。

【現状のソース】

sqlstring = "DBからselectする単純なSQL" df = pd.read_sql(sql=sqlstring, con="DB接続情報") df_cross = pd.pivot_table(df,index=["id","name"],columns=["item_cd","item_name"],values=["数量","金額"],aggfunc="sum",margins=True) df_cross = df_cross.fillna(0)

【現状の表示結果】
イメージ説明

【やりたい表示結果】
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1order = (1, 2, 0) 2names = df_cross.columns.names 3new_order = [names[i] for i in order] 4tmp_names = [*map(str, names)] 5tmp_order = [tmp_names[i] for i in order] 6df_cross = ( 7 df_cross.T.rename_axis(tmp_names).reset_index() 8 .set_index(tmp_order).sort_index().rename_axis(new_order).T) 9 10print(df_cross) 11 12# 13item_cd 1001 2001 3001 14item_name ITEM_A ITEM_B ITEM_C 15 数量 金額 数量 金額 数量 金額 16id name 171 V555 0 0 5 500 0 0 182 W666 10 2000 0 0 2 100 193 X777 0 0 0 0 4 200 204 Y888 3 600 7 700 1 50 215 Z999 0 0 2 200 5 250

投稿2022/04/29 01:13

melian

総合スコア19849

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horio

2022/04/29 04:28

Melian様 ご教示頂きありがとうございました! 参考にして無事に実装出来ました! まだまだ経験不足ですので、今後も精進したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問