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)
。