У меня есть следующее pandas.core.series.Series
:
Color
Red 4
Green 7
, а также следующий мультииндексный фрейм данных. Моя цель - создать столбец Target
в кадре данных, проверив, меньше ли столбец Value
в кадре данных, чем соответствующее значение цвета в pandas.core.series.Series
, и вернуть 1, если это так. Например, в первой строке значение в столбце Value
в кадре данных равно 12, что больше соответствующего значения индекса, соответствующего 4, в объекте серии панд, и поэтому Target возвращает 0.
Value Target
Color Animal
Red Tiger 12 0
Tiger 3 1
Green Lion 6 1
Lion 35 0
Моя следующая попытка получает ValueError: Can only compare identically-labeled Series objects
.
import pandas as pd
import numpy as np
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,3,6,35]})
dt.set_index(['Color','Animal'], inplace=True)
dt['Target'] = np.where(dt['Value'] < x ,1 ,0 )