Python 将不相同的数据帧与序列对象进行比较

Python 将不相同的数据帧与序列对象进行比较,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有以下pandas.core.series.series: Color Red 4 Green 7 以及下面的多索引数据帧。我的目标是通过检查数据框中的值列是否小于pandas.core.series.series中相应的颜色值,在数据框中创建Target列,如果是,则返回1。例如,在第一行中,数据帧中value列中的值为12,大于熊猫系列对象中对应的匹配索引值4,因此目标返回0 Value Target Color Animal

我有以下
pandas.core.series.series

Color
Red      4
Green    7
以及下面的多索引数据帧。我的目标是通过检查数据框中的
列是否小于
pandas.core.series.series
中相应的颜色值,在数据框中创建
Target
列,如果是,则返回1。例如,在第一行中,数据帧中
value
列中的值为12,大于熊猫系列对象中对应的匹配索引值4,因此目标返回0

              Value    Target
Color Animal       
Red   Tiger      12      0
      Tiger      3       1
Green Lion       6       1
      Lion       35      0
我的以下尝试得到一个
ValueError:只能比较标签相同的系列对象

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 )
将熊猫作为pd导入
将numpy作为np导入
x=pd.系列([4,7],索引=[‘红色’,‘绿色’]))
x、 index.name='Color'
数据帧({'Color':['Red'、'Red'、'Green'、'Green']、'Animal':['Tiger'、'Tiger'、'Lion'、'Lion']、'Value':[12,3,6,35])
dt.set_索引(['Color','Animal'],inplace=True)
dt['Target']=np.其中(dt['Value']
使用
lt
代替运算符,并指定轴

dt['Target'] = dt['Value'].lt(x, axis=0).astype(int)
print (dt)
              Value  Target
Color Animal               
Red   Tiger      12       0
      Tiger       3       1
Green Lion        6       1
      Lion       35       0

lt
=“小于”

使用
lt
代替运算符,并指定轴

dt['Target'] = dt['Value'].lt(x, axis=0).astype(int)
print (dt)
              Value  Target
Color Animal               
Red   Tiger      12       0
      Tiger       3       1
Green Lion        6       1
      Lion       35       0

lt
=“小于”

感谢您提供了出色的解决方案。如果我有小数,我应该用什么来代替
astype(int)
lt
始终返回分别对应于1或0的T/F值的布尔掩码。如果要将它们转换为1.0或0.0,请使用
.astype(float)
。感谢您提供了出色的解决方案。如果我有小数,我应该用什么来代替
astype(int)
lt
始终返回分别对应于1或0的T/F值的布尔掩码。如果要将它们转换为1.0或0.0,请使用
.astype(float)