1 回答

TA贡献1883条经验 获得超3个赞
如果我们总是想将序列与最内层对齐,我们可以:
sequence = [1, 2, 3]
inner_level = parameters.index.get_level_values(len(parameters.index.levels) - 1)
n = inner_level.size // inner_level.nunique()
parameters['CaseInvariantTimeVariant'] = sequence * n
*请注意,sort在分配序列之前,我们仍然需要索引:parameters.sort_index(inplace=True)。
下面如果我们要使用外层:
我会sort_index然后只是重复序列的n时间,其中n是唯一索引的长度(Cases在您的数据中)。
parameters.sort_index(inplace=True)
my_sequence = (1, 2, 3)
# below by level: parameters.index.get_level_values(0).nunique()
n = parameters.index.get_level_values('Cases').nunique()
parameters['CaseInvariantTimeVariant'] = my_sequence * n
如果您想要一个始终按最外层索引重复序列的函数:
def repeat_seq_by_outer_index(index, sequence):
return sequence * index.get_level_values(0).nunique()
repeat_seq_by_outer_index(parameters.index, (1, 2, 3))
如果您想要一个始终按nth索引中的级别重复序列的函数:
def repeat_seq_by_nth_index(index, level, sequence):
return sequence * index.get_level_values(level).nunique()
repeat_seq_by_nth_index(parameters.index, 0, (1, 2, 3))
添加回答
举报