dataframe根据列特征的条件给新列特征赋值

 

 

方式一: 直接用比较   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)

输出

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值