2014-01-29 2 views
1

의 시프트 I가 제 1 레벨은 심볼 인 MultiIndex와 판다 DataFrame 있다면, 두 번째 레벨은 일이고, ewma 또는 데이터에 shift 동작을 수행하는 가장 쉬운 방법은 무엇입니까.EWMA 또는 MultiIndex

현재 기호를 순조롭게 이동하는 이동이 있습니다.

아마 Panel을 사용해야합니까?

사용 : 그것은 작동 할 수처럼

In [13]: pd.concat({"GOOG": pd.DataFrame({'price':[100,101]},index=["2013-1-1","2013-1-2"]),"AAPL": pd.DataFrame({'price':[100,101]},index=pd.to_datetime(["2013-1-1","2013-1-2"]))}, axis=0, names=["Symbol", "Date"]) 
Out[13]: 
       price 
Symbol Date 
AAPL 2013-1-1 100 
     2013-1-2 101 
GOOG 2013-1-1 100 
     2013-1-2 101 

In [17]: df.shift() 
Out[17]: 
       price 
Symbol Date 
AAPL 2013-1-1 NaN 
     2013-1-2 100 
GOOG 2013-1-1 101 
     2013-1-2 100 

이 보이지만 Panel 레이아웃은 확실히 직관적되지 않습니다 : df.to_panel().shift(1, axis="minor").ix["price"]

답변

2

사용 groupby() : 작동

df.groupby(level=0).transform("shift") 
+1

합니다. 'ewma'의 경우도 비슷하게 해결할 수 있습니다 :'df.groupby (level = 0) .apply (lambda x : pd.ewma (x, com = 2))' –