加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – pandas列上的不等式

发布时间:2020-12-20 12:12:59 所属栏目:Python 来源:网络整理
导读:我有一个pandas数据框,我想基于现有列和某些不等式创建一个新列.例如,让我们 df=pd.DataFrame({'a':[1,2,3,4,5,6,7],'b':[3,7,1]}) 所以df看起来像 a b0 1 31 2 62 3 43 4 24 5 75 6 76 7 1 我想添加一个新列res,如果a中的对应值小于2则等于0,如果a中的对应
我有一个pandas数据框,我想基于现有列和某些不等式创建一个新列.例如,让我们

df=pd.DataFrame({'a':[1,2,3,4,5,6,7],'b':[3,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,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读