将 pandas 多索引转换为日期时间格式

Convert pandas multiindex to datetime format

我在 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")

但它给了我一个错误。

能否请您提供一些帮助,说明如何以最有效的方式完成此任务?

谢谢

你可以先用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']