Home >Backend Development >Python Tutorial >How to Transform Wide Data to Long Format in Pandas?

How to Transform Wide Data to Long Format in Pandas?

Barbara Streisand
Barbara StreisandOriginal
2024-11-14 21:36:02878browse

How to Transform Wide Data to Long Format in Pandas?

Reshaping Wide Data to Long Format in Pandas

In the realm of data manipulation, reshaping data from wide to long format often arises as a necessity. Consider the following pandas dataframe:

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

To transform this into the desired long format:

| 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 |

We employ the pandas.melt or pandas.DataFrame.melt function, which elegantly transforms wide data into long format.

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'])

Alternatively, one can omit the reset_index step by calling melt with ignore_index=False:

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

Resulting in the desired long format:

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

This transformation enables efficient merging with other dataframes based on shared dates and column names.

The above is the detailed content of How to Transform Wide Data to Long Format in Pandas?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn