我有一个PD df,它是MultiIndex。我想在每个符号上运行一个函数,但在完整d上运行规范化函数。第一个符号很好,但是后面的符号被第一个符号操纵。如何使用矢量化进行标准化,而不是遍历符号并对其进行过滤?
这是我在没有MultiIndex df且只有一个符号的情况下尝试的方法。
>>>df.loc['Adj_Close_Norm'] = df/df.iloc[0]
>>>print(df)
Adj_Close_Price
Symbol Date
JPM 2010-01-04 40.87
2010-01-05 41.67
2010-01-06 41.89
2010-01-07 42.72
2010-01-08 42.62
... ...
SPY 2011-12-23 125.19
2011-12-27 125.29
2011-12-28 123.64
2011-12-29 124.92
2011-12-30 124.31
[1008 rows x 1 columns]
>>>df.loc['Adj_Close_Norm'] = df/df.iloc[0]
>>>print(df)
Adj_Close_Price Adj_Close_Norm
Symbol Date
JPM 2010-01-04 40.87 1.000000
2010-01-05 41.67 1.019574
2010-01-06 41.89 1.024957
2010-01-07 42.72 1.045265
2010-01-08 42.62 1.042819
... ... ...
SPY 2011-12-23 125.19 3.063127
2011-12-27 125.29 3.065574
2011-12-28 123.64 3.025202
2011-12-29 124.92 3.056521
2011-12-30 124.31 3.041595
[1008 rows x 2 columns]
让我们来做groupby
+ transform
df.loc['Adj_Close_Norm']=df['Adj_Close_Price']/df.groupby(level=0)['Adj_Close_Price'].transform('first')