Добавьте фрейм данных, представляющий максимальное значение на основе сравнения других фреймов данных - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть следующий мультииндексный фрейм данных, где один df представляет дневной максимум гипотетических акций, а другой состоит из закрытия предыдущего дня.

        High_Price        Yest_Close        
Ticker  ABC   XYZ   RST   ABC   XYZ. RST
2/1/19  3     10    90    2     9    88
1/31/19 3.5   9     88    4     9.5  89
1/30/19 2.5   9.5   86    3     9.8  85
1/29/19 4     8.5   92    3.5   8    93
1/28/19 4.5   8.2   95    4.8   8    96
1/27/19 2.8   7     94    2.6   6.5  93
1/26/19 2.6   6.5   93    2.7   7    92

Я хочу добавить еще один фрейм данных, представляющий максимальное значение между двумя значениями df (High_Price и Yest_Close). Таким образом, третий df должен выглядеть следующим образом:

        High_Price        Yest_Close          Max       
Ticker  ABC   XYZ   RST   ABC     XYZ   RST   ABC   XYZ  RST
2/1/19  3     10    90    2       9     88    3     10   90
1/31/19 3.5   9     88    4       9.5   89    4     9.5  89
1/30/19 2.5   9.5   86    3       9.8   85    3     9.8  86
1/29/19 4     8.5   92    3.5     8     93    4     8.5  93
1/28/19 4.5   8.2   95    4.8     8     96    4.8   8.2  96
1/27/19 2.8   7     94    2.6     6.5   93    2.8   7    94
1/26/19 2.6   6.5   93    2.7     7     92    2.7   7    93

Я попробовал следующую логику c, но это не дает мне правильный результат:

df['Max',ticker] = df[['High_Price','Yest_Close']].max(axis=1)

Как мне исправить мой код, чтобы получить результат, который я ищу?

1 Ответ

0 голосов
/ 19 апреля 2020

Вы хотите level=1 внутри max, затем создайте multiindex, а затем df.join:

m = df[['High_Price','Yest_Close']].max(level=1,axis=1)
m.columns = pd.MultiIndex.from_product((['Max'],m.columns))
out = df.join(m)

               High_Price           Yest_Close    Max            
               ABC   XYZ RST        ABC  XYZ RST  ABC   XYZ   RST
Ticker                                                           
2/1/19         3.0  10.0  90        2.0  9.0  88  3.0  10.0  90.0
1/31/19        3.5   9.0  88        4.0  9.5  89  4.0   9.5  89.0
1/30/19        2.5   9.5  86        3.0  9.8  85  3.0   9.8  86.0
1/29/19        4.0   8.5  92        3.5  8.0  93  4.0   8.5  93.0
1/28/19        4.5   8.2  95        4.8  8.0  96  4.8   8.2  96.0
1/27/19        2.8   7.0  94        2.6  6.5  93  2.8   7.0  94.0
1/26/19        2.6   6.5  93        2.7  7.0  92  2.7   7.0  93.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...