stack(): usage typique#

import pandas as pd

on a des données qui ressemblent à ceci

df = pd.read_csv("data/stack-simple.csv")
df
city postcode t1 t2 t3 t4
0 London 90000 1 2 3 0
1 Paris 75000 0 4 2 3

on veut produire une table simplifiée qui ressemblerait à ceci; on élimine les lignes qui correspondraient à une valeur nulle

city

postcode

type

nombre

London

90000

t1

1

London

90000

t2

2

London

90000

t3

3

Paris

75000

t2

4

Paris

75000

t3

2

Paris

75000

t4

3


se concentrer sur les colonnes ti#

# commencez par extraire les colonnes spéciales
columns = ['t1', 't2', 't3', 't4']

df2 = ...

stack()#

attention comme on a un index simple sur les colonnes, le stack() nous produit une Series

# appliquez un simple `stack()` sur la dataframe df2
# regardez le contenu et le type

series = ...

on peut nettoyer les 0#

on peut se passer de cette étape si on a des n/a à la place des 0; mais ici, c’est le moment de nettoyer

# à vous
...

passer de l’index à une colonne ‘usuelle’#

à ce stade, que faut-il faire avec la donnée type pour se rapprocher de ce qu’on cherche à produire ?

[indice] voyez df.reset_index()

# à vous

df3 = ...

nommer#

# les noms des colonnes dans df3 ne sont vraiment pas terribles

# à vous...

recoller#

à ce stade il ne reste plus qu’à recoller les morceaux

[indice] pd.merge() et/ou df.join()

# à vous

nettoyer#

et enfin, à éliminer les colonnes qui sont de trop

# à vous
# pour vérifier le résultat de visu
# df_all