如果我有一个带有DataFrame
的Pandas MultiIndex
,其中第一个级别是符号,则第二个级别是日期,执行ewma
或{shift
的最简单方法是什么{1}}对数据进行操作。
目前天真地转移符号。
也许我需要使用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"]
答案 0 :(得分:2)
使用groupby()
:
df.groupby(level=0).transform("shift")