2017-02-21 15 views
1

У меня есть мультииндексная в панде, который выглядит как один сгенерирован следующий код:Преобразовать панду мультииндекс формат дату и время

arrays = [[2001, 2001, 2003, 2004], ['January', 'March', 'June', 'December']] 
tuples= list(zip(*arrays)) 
index = pd.MultiIndex.from_tuples(tuples, names=['year', 'month']) 

Я хотел бы преобразовать этот показатель к индексу даты и времени. Я пробовал использовать

pd.to_datetime(index, format="%Y %B") 

но это дает мне ошибку.

Не могли бы вы оказать некоторую помощь в том, как это сделать наиболее эффективным образом?

Благодаря

ответ

1

Вы можете использовать map первым:

idx = index.map(lambda x: ''.join((str(x[0]), x[1]))) 
print (idx) 
['2001January' '2001March' '2003June' '2004December'] 

print (pd.to_datetime(idx, format="%Y%B")) 
DatetimeIndex(['2001-01-01', '2001-03-01', '2003-06-01', '2004-12-01'], 
       dtype='datetime64[ns]', freq=None) 

Другое решение:

idx = index.map(lambda x: '{}{}'.format(x[0], x[1])) 
print (idx) 
['2001January' '2001March' '2003June' '2004December'] 

Или list comprehension решение:

idx = ['{}{}'.format(x[0], x[1]) for x in index] 
print (idx) 
['2001January', '2001March', '2003June', '2004December'] 
Смежные вопросы