为了更好地解释这个问题,我将使用 pandas 库给出一些细节,但我认为这个问题的中心思想很笼统,正如标题所述。
一般问题:编码任意数量的循环重叠的更优雅的方法是什么。
具体示例:以函数doStruf(df, listLevels) 为例,其中 df 是 pandas DataFrame 对象,listLevels 是观察单元的分层组织特征(例如,人、教室、学校、...、州)的名称列表在 df 中描述。对于doStruf(df, ["person", "classes", ..., "states"])我希望 doStruf 函数像
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 ...
处理这种运行时定义的循环重叠数的更简洁的方法是什么?