方式一: 直接用比较 df['B']=df[['B','C']].max(axis=1)
方式2 : dataframe.apply(自定义函数)
df['label']=df.apply(lambda x: label_get(x.time,x.broad),axis=1)
### 代码测试样例
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['time','B','C','D'])
## 测试,labels的生成为 A 在0-5区间内的,B/c 小于等于0.51为0,大于0.8为1 A 5-10区间内的,B/C 小于0.942的为0,大于为1
df['B']=df['B'].astype(float)
df['C']=df['C'].astype(float)
df['broad']=df['B']/df['C']
# df
df.loc['2013-01-02','B']=10
# df['B']=
print(df)
# df['z']=df[['x','y']].max(axis=1) 取两个特征中的大者做为新特征列的值
df['B']=df[['B','C']].max(axis=1)
df
## 应用函数,根据某几列特征的条件,对新特征赋值
def label_get(time_length,broad_rate):
if time_length<5:
if broad_rate<=0.51:
return 0
else:
return 1
elif time_length >=5 and time_length <14:
if broad_rate<0.91:
return 0
else:
return 1
else:
return 0
df['label']=df.apply(lambda x: label_get(x.time,x.broad),axis=1)
print(df)
输出