python不等式编程_在Python中pandas列上的不等式

我有一个pandas数据框,我想基于现有列和某些不等式创建一个新列.例如,让我们

df=pd.DataFrame({'a':[1,2,3,4,5,6,7],'b':[3,6,4,2,7,7,1]})

所以df看起来像

a b

0 1 3

1 2 6

2 3 4

3 4 2

4 5 7

5 6 7

6 7 1

我想添加一个新列res,如果a中的对应值小于2则等于0,如果a中的对应值至少为2且小于4则为1,否则为2.所以我想得到

a b res

0 1 3 0

1 2 6 1

2 3 4 1

3 4 2 2

4 5 7 2

5 6 7 2

6 7 1 2

到目前为止,我一直在使用apply如下:

def f(x):

if x['a']<2:

return 0

elif x['a']>=2 and x['a']<4:

return 1

else:

return 2

df['res']=df.apply(f,axis=1)

但我想知道是否有更直接的方式,或者某些特定的熊猫方法可以让我这样做.

你可以使用

pd.cut:

df['res'] = pd.cut(df.a,[-np.inf,2,4,np.inf],labels=[0,1,2],right=False)

输出:

a b res

0 1 3 0

1 2 6 1

2 3 4 1

3 4 2 2

4 5 7 2

5 6 7 2

6 7 1 2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值