Обратитесь к значению серии панд из мультииндексного фрейма данных панд. - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть следующее pandas.core.series.Series:

Color
Red      4
Green    7

и следующий мультииндексный фрейм данных. Моя цель - создать столбец Target в кадре данных путем деления Value на соответствующее значение Color в pandas.core.series.Series. Например, цель первого ряда должна быть 12/4 = 3.

              Value    Target
Color Animal       
Red   Tiger      12      3
      Tiger      24      6
Green Lion       21      3
      Lion       35      5

Моя следующая попытка отлично работает с одним индексом, но не работает с мультииндексом с ошибкой Index._join_level on non-unique index is not implemented

import pandas as pd
x = pd.Series([4,7], index=['Red','Green'])
x.index.name = 'Color'

dt = pd.DataFrame({'Color': ['Red','Red','Green','Green'], 'Animal': ['Tiger','Tiger','Lion','Lion'],  'Value': [12,24,21,35]})
dt.set_index(['Color','Animal'], inplace=True)
dt['Target'] = dt['Value'] / x.loc[dt.index.get_level_values('Color')]

1 Ответ

0 голосов
/ 09 сентября 2018

Просто используйте index matching, поскольку у вас есть серии с одинаковыми метками.

dt['Target'] = dt.Value/x

                Value   Target
Color   Animal      
Red     Tiger   12      3.0
        Tiger   24      6.0
Green   Lion    21      3.0
        Lion    35      5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...