ホームページ  >  記事  >  バックエンド開発  >  Pandas でワイドデータをロングフォーマットに変換する方法?

Pandas でワイドデータをロングフォーマットに変換する方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-14 21:36:02776ブラウズ

How to Transform Wide Data to Long Format in Pandas?

Pandas でワイド データをロング フォーマットに再形成する

データ操作の領域では、ワイド フォーマットからロング フォーマットへのデータの再形成が頻繁に発生します。必要性。次の pandas データフレームを考えてみましょう:

AA BB CC
05/03 1 2 3
06/03 4 5 6
07/03 7 8 9
08/03 5 7 1

これを目的の長い形式に変換するには:

| AA | 05/03 | 1 |
| AA | 06/03 | 4 |
| AA | 07/03 | 7 |
| AA | 08/03 | 5 |
| BB | 05/03 | 2 |
| BB | 06/03 | 5 |
| BB | 07/03 | 8 |
| BB | 08/03 | 7 |
| CC | 05/03 | 3 |
| CC | 06/03 | 6 |
| CC | 07/03 | 9 |
| CC | 08/03 | 1 |

ここでは、pandas.melt または pandas.DataFrame.melt 関数を使用します。これは、幅の広いデータを長い形式にエレガントに変換します。

import pandas as pd

df = pd.DataFrame({
    'date' : ['05/03', '06/03', '07/03', '08/03'],
    'AA' : [1, 4, 7, 5],
    'BB' : [2, 5, 8, 7],
    'CC' : [3, 6, 9, 1]
}).set_index('date')

df = df.reset_index()
pd.melt(df, id_vars='date', value_vars=['AA', 'BB', 'CC'])

あるいは、次の呼び出しによって、reset_index ステップを省略することもできます。 ignore_index=False でメルトします:

dfm = df.melt(ignore_index=False).reset_index()

目的の長い形式になります:

date variable value
0 05/03 AA 1
1 06/03 AA 4
2 07/03 AA 7
3 08/03 AA 5
4 05/03 BB 2
5 06/03 BB 5
6 07/03 BB 8
7 08/03 BB 7
8 05/03 CC 3
9 06/03 CC 6
10 07/03 CC 9
11 08/03 CC 1

この変換により、共有された日付と列名に基づいて他のデータフレームと効率的にマージできます。

以上がPandas でワイドデータをロングフォーマットに変換する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。