← retour aux snippets

pandas: melt (wide → long)

Convertir un DataFrame large en format long.

python pandas #pandas#melt#reshape

objectif

Convertir un DataFrame large en format long.

code minimal

import pandas as pd

df = pd.DataFrame({"id":[1,2], "a":[10,20], "b":[30,40]})
long = df.melt(id_vars=["id"], var_name="var", value_name="val")
print(long.sort_values(["id","var"]).to_dict(orient="records"))

utilisation

import pandas as pd

df = pd.DataFrame({"t":[1,2], "x1":[5,6], "x2":[7,8]})
print(pd.melt(df, id_vars=["t"]).shape)

variante(s) utile(s)

import pandas as pd

print(pd.wide_to_long(pd.DataFrame({"id":[1,1], "x_2024":[1,2], "x_2025":[3,4]}), stubnames="x", i="id", j="year", sep="_").reset_index().shape)

notes

  • Utile avant un groupby/agg ou une visualisation.