我在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")
但它给了我一个错误。
请您提供一些有关如何以最有效的方式完成此任务的帮助?
由于
答案 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']