使用
set_index
:
df['Date'] = pd.to_datetime(df['Date'])
df1 = df.set_index([df.Date.dt.year.rename('year'),df.Date.dt.month.rename('month')])
类似于
rename_axis
:
df1 = df.set_index([df.Date.dt.year,df.Date.dt.month]).rename_axis(['year','month'])
print (df1)
Date Close Open
year month
2012 1 2012-01-02 348.36 342.19
1 2012-01-03 355.23 350.24
1 2012-01-04 354.00 352.84
1 2012-01-05 352.23 352.12
1 2012-01-06 351.24 351.97
另一个解决方案(更详细):
df.index = pd.MultiIndex.from_arrays([df.Date.dt.year.rename('year'),
df.Date.dt.month.rename('month')])
df.index = pd.MultiIndex.from_arrays([df.Date.dt.year,
df.Date.dt.month], names=('year','month'))