Python 熊猫数据帧的多索引的日期索引
我有一个带有多索引的数据框,我想将其转换为Python 熊猫数据帧的多索引的日期索引,python,python-3.x,pandas,datetime,multi-index,Python,Python 3.x,Pandas,Datetime,Multi Index,我有一个带有多索引的数据框,我想将其转换为date()index 下面是我拥有的数据帧类型的模拟示例: i = pd.date_range('01-01-2016', '01-01-2020') x = pd.DataFrame(index = i, data=np.random.randint(0, 10, len(i))) x = x.groupby(by = [x.index.year, x.index.month]).sum() print(x) 我试图通过以下方式将其转换为日期索引:
date()
index
下面是我拥有的数据帧类型的模拟示例:
i = pd.date_range('01-01-2016', '01-01-2020')
x = pd.DataFrame(index = i, data=np.random.randint(0, 10, len(i)))
x = x.groupby(by = [x.index.year, x.index.month]).sum()
print(x)
我试图通过以下方式将其转换为日期索引:
def to_date(ind):
return pd.to_datetime(str(ind[0]) + '/' + str(ind[1]), format="%Y/%m").date()
# flattening the multiindex to tuples to later reset the index
x.set_axis(x.index.to_flat_index(), axis=0, inplace = True)
x = x.rename(index = to_date)
x.set_axis(pd.DatetimeIndex(x.index), axis=0, inplace=True)
但是它非常慢。我认为问题出在pd.to_datetime(str(ind[0])+'/'+str(ind[1]),format=“%Y/%m”).date()行中。非常感谢您能提供更快的解决方案。您可以使用:
x.index=pd.to_datetime([f"{a}-{b}" for a,b in x.index],format='%Y-%m')
print(x)
你说得对,速度快了10倍。但是为什么呢?代码中的想法几乎是一样的。@guy12345是的,但是那里有太多的操作,还有一些函数,例如:set\u index
在数据帧上操作,而不是仅使用索引。然而,该方法仅对索引列表进行操作。
0
2016-01-01 162
2016-02-01 119
2016-03-01 148
2016-04-01 125
2016-05-01 132
2016-06-01 144
2016-07-01 157
2016-08-01 141
2016-09-01 138
2016-10-01 168
2016-11-01 140
2016-12-01 137
2017-01-01 113
2017-02-01 113
2017-03-01 155
..........
..........
......