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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

8722閲覧

Pandasで複数のカラムでピボットテーブルをしたあとヘッダーを1行にしたい

kakedashi_mk_py

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2020/10/14 08:57

編集2020/10/19 06:12

column1, column2がある日次の取引集計データdfについて、以下のようにpivot_tableを使うとヘッダーが2行出ます。

Python

1import pandas as pd 2df = pd.DataFrame({ 3 'date':['2020-10-01', '2020-10-01', '2020-10-01','2020-10-01','2020-10-02','2020-10-02','2020-10-02','2020-10-02'], 4 'column1':['GroupA', 'GroupA', 'GroupB', 'GroupB', 'GroupA', 'GroupA', 'GroupB', 'GroupB'], 5 'column2':['Categ1', 'Categ2', 'Categ1', 'Categ2', 'Categ1', 'Categ2', 'Categ1', 'Categ2'], 6 'sales':['1000', '2000', '1500', '1200', '2200', '1300', '1400', '2100'] 7}) 8 9df = df.set_index('date') 10df_pivot = pd.pivot_table(df, index=df.index, columns=['column1', 'column2'], values='sales', aggfunc='sum')

このdf_pivotを別のDataFrame(ヘッダーは1行)と縦結合する工程などで不都合が発生するので、df_pivotのヘッダーを1行に集約してしまいたいのですが、その方法が分からずなので、ご教示いただけると助かります。

出したいアウトプットのイメージは下記です。

Python

1df_pivot_dash = pd.DataFrame({ 2 'date': ['2020-10-01', '2020-10-02'], 3 'GroupA_Categ1':['1000', '2200'], 4 'GroupA_Categ2':['2000', '1300'], 5 'GroupB_Categ1':['1500', '1400'], 6 'GroupB_Categ2':['1200', '2100'], 7}) 8df_pivot_dash

よろしくおねがいします。

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

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

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

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

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

meg_

2020/10/14 11:51

df、df_pivot、欲しい結果を示してもらえませんか?(dfはサンプルデータで結構です)
kakedashi_mk_py

2020/10/19 06:12

回答が遅くなりすみません。。 編集にてイメージを添付しましたので、ご確認いただけますでしょうか? ※サンプルデータなので、データ型変えておらずです、すみません。
guest

回答1

0

ベストアンサー

カラム名を置き換えてしまうのが簡単だと思います。
MultiIndexなカラムのそれぞれを '_' でjoinしています。

python

1df_pivot.columns = ['_'.join(cols) for cols in df_pivot.columns]

さらに、dateをインデックスから通常の列にするには、reset_index します。

python

1df_pivot = df_pivot.reset_index()

投稿2020/10/19 06:42

bsdfan

総合スコア4794

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

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

kakedashi_mk_py

2020/10/26 08:28

その方法初めて知りました、ありがとうございますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問