stack(): pour énumérer une liste#
import pandas as pd
from head import head
# pour information seulement (on a des .csv maintenant)
# pour lire les excel au format .xlsx il faut importer ceci
# !pip install openpyxl
on a trois tables comme ceci
df1 = pd.read_csv('data/bornes.csv', sep=';')
df2 = pd.read_csv('data/bornes2.csv', sep=';')
df3 = pd.read_csv('data/bornes3.csv', sep=';')
df1
| ville | bornes | |
|---|---|---|
| 0 | Paris | [201, 202, 203] |
| 1 | Marseille | [301, 310, 350] |
df2
| borne | op_id | |
|---|---|---|
| 0 | 201 | 10 |
| 1 | 202 | 30 |
| 2 | 203 | 20 |
| 3 | 301 | 10 |
| 4 | 310 | 20 |
| 5 | 350 | 30 |
df3
| op_id | op_name | |
|---|---|---|
| 0 | 10 | Tesla |
| 1 | 20 | BP Pulse |
| 2 | 30 | City EV |
on veut transformer cela pour aboutir à ceci; une ligne par borne
ville |
borne |
op_name |
|---|---|---|
Paris |
201 |
Tesla |
Paris |
202 |
City EV |
… |
… |
… |
il s’agit donc de démêler l’écheveau pour fabriquer une table qui a 6 lignes, et pour chaque ligne l’opérateur de la borne
indices#
on a vu dans le cours que sur un objet Series on pouvait avoir besoin occasionnellement d’utiliser l’attribut
strici on a envie de passer par un objet liste; notamment je vous rappelle
la méthode
replace()sur les chaines de caractèresla méthode
split()sur les chaines de caractères
une fois que vous êtes arrivés à mettre une liste dans une cellule d’une Series, il peut être intéressant de remplacer ce contenu par .. un objet Series
vous pourrez ensuite invoquer la méthode
.stack()sur la Series englobante
# à vous de jouer