Как мне лучше всего нормализовать PD MultiIndex DF? - PullRequest
1 голос
/ 28 апреля 2020

У меня есть 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]

1 Ответ

1 голос
/ 28 апреля 2020

Давайте сделаем groupby + transform

df.loc['Adj_Close_Norm']=df['Adj_Close_Price']/df.groupby(level=0)['Adj_Close_Price'].transform('first')
...