Pour mieux expliquer le problème, je vais donner quelques détails en utilisant la bibliothèque pandas mais je pense que l'idée centrale de la question est assez générale, comme l'indique le titre.
La question générale : Quelle est la manière la plus élégante de coder un nombre arbitraire d'imbrication de boucles.
Exemple spécifique : prenez une fonction doStruf(df, listLevels) avec df étant un objet pandas DataFrame et listLevels étant une liste de noms de caractéristiques organisées hiérarchiquement (par exemple, personne, classes, écoles, ..., états) des unités d'observation décrites dans df. Pour doStruf(df, ["person", "classes", ..., "states"]) Je voudrais que la fonction doStruf fasse quelque chose comme
for person in unique(array(df["person"])):
personData = df[df["person"] == person]
for classroom in unique(array(personData["classrooms"])) :
classroomData = personData[personData["classroom"] == classroom]
... arbritrary number of loops imbrication depending on len(listLevels) ...
varYData = varXData[varXData["varY"] == varY]
for state in unique(array(varYData["states"])) :
stateData = varYData[varYData["state"] == state]
... do stuff using stateData ...
Quelle est la manière la plus propre de traiter ce type de nombre d'imbrications de boucles défini par l'exécution ?