将pandas multiindex转换为datetime格式

时间:2017-02-21 12:31:38

标签: python pandas datetime multi-index

我在pandas中有一个多索引,看起来像是由以下代码生成的:

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 个答案:

答案 0 :(得分: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']