Я хочу мультииндексировать массив данных. Первоначально я индексировал свои данные с помощью даты и времени, но для некоторых более поздних приложений мне пришлось добавить еще один числовой индекс (который идет от 0 до len(array)-1).
Я написал эти маленькие строки:
O = [0.701733664614, 0.699495411782, 0.572129320819, 0.613315597684, 0.58079660603, 0.596638918579, 0.48453382119]
Ab = [datetime.datetime(2018, 12, 11, 14, 0), datetime.datetime(2018, 12, 21, 10, 0), datetime.datetime(2018, 12, 21, 14, 0), datetime.datetime(2019, 1, 1, 10, 0), datetime.datetime(2019, 1, 1, 14, 0), datetime.datetime(2019, 1, 11, 10, 0), datetime.datetime(2019, 1, 11, 14, 0)]
tst = pd.Series(O,index=Ab)
ld = len(tst)
index = pd.MultiIndex.from_product([(x for x in range(0,ld)),Ab], names=['id','dtime'])
print (index)
data = pd.Series(O,index=index)
Но при печати показатель я получаю странные «коды»: Уровни и имена идеальны, но коды идут от 0 до 763...764 раза (вместо одного)!
Я попытался добавить команду set_codes:
index.set_codes([x for x in range(0,ld)], level=0)
print (index)
Я зря, у меня следующая ошибка:
ValueError: Unequal code lengths: [764, 583696]
начальная серия панд:
печать (тст)
01.01.2005 14:00:00 0,544177
01.01.2005 14:00:00 0,544177
21.01.2005 14:00:00 0.602239
...
2019-05-21 10:00:00 0.446813
2019-05-21 14:00:00 0.466573
Длина: 764, dtype: float64
новый ожидаемый
идентификатор dtime
0 01-01-2005 14:00:00 0,544177
1 01.01.2005 14:00:00 0.544177
2 21-01-2005 14:00:00 0.602239
...
762 2019-05-21 10:00:00 0.446813
763 2019-05-21 14:00:00 0.466573
заранее спасибо






Вы можете создать новый индекс с помощью MultiIndex.from_arrays и переназначить его на Series:
s.index = pd.MultiIndex.from_arrays([np.arange(len(s)), s.index], names=['id','dtime'])
У меня есть это: идентификатор 759 0.570497 Я имею в виду, как я могу ввести какой-либо идентификатор и вернуть определенную дату. Извините, оговорился ^^'
тогда используй print (s.loc[5].index[0])
что такое "s" в s.index? Откуда это пришло?
@Boris - это сериал, вот tst
еще один маленький вопрос, что мне делать, если я хочу получить доступ к определенной дате? Я просто могу получить последнее значение, например, так:
s[0][0]