2017-03-07 7 views
0

は私が毎月datetime指数(次のコードでのデータのテーブルがあるとし、「今年は、」1月から12月、2年間提供します):は「月」のレベルで*マルチインデックス*にデータフレームのオブジェクト上のパンダ日時インデックスを変換し、

import pandas as pd 
import numpy as np 
from datetime import datetime 
N = 12*2 
c = [datetime(1970 + i//12, (i%12)+1, 1) for i in range(N)] 
d = pd.DataFrame(np.random.rand(N), index=c) 
print(d) 

別のレベルmonthyearMultiIndexDateTimeIndexを変換するための最良の方法は何ですか?おそらく、groupbyでこれを行う方法がありますが、わかりません。

答えて

3

あなたがyearmonthからMultiIndexオブジェクトを構築し、データフレームのインデックスに割り当てることができます。

import pandas as pd 
d.index = pd.MultiIndex.from_arrays([d.index.year, d.index.month]) 

d.index 
# MultiIndex(levels=[[1970, 1971], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]], 
#   labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]) 

d.head() 

#     0 
#1970 1 0.657130 
#  2 0.047241 
#  3 0.984799 
#  4 0.868508 
#  5 0.678536 
0
d.index = pd.MultiIndex.from_tuples(d.reset_index()['index'].\ 
            apply(lambda x:(x.year,x.month))) 
関連する問題