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))
添加回答
舉報