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 サイトの他の関連記事を参照してください。