python中的函数全部公式_Python中的经典实用函数

1. Numpy中的where函数

首先看下官网文档给出的定义:

numpy.where(condition[, x, y])

Return elements, either from x or y, depending on condition

依赖于所给定条件,决定返回x还是返回y,如果条件为真,返回x,否则返回y。

对于一维数据

对于一维数据而言上述定义等价于:

[xv if c else yv for (c,xv,yv) in zip(condition,x,y)]

具体例子如下:

con = [True,True,False,True,True,True,False ]

data1 = np.arange(7)

data2 = np.arange(14,21)

print (np.where(con,data1,data2))

结果为:

[ 0 1 16 3 4 5 20]

对于二维数据

x = np.random.randn(4,4)

print (x)

print(np.where(x>0,2,-2)) #将数据集中所有大于0的全部置为2,小于0的全部置为-2

最近在做类别型变量的特征交叉问题时,发现同样可以使用where函数来达到目的,比如有两个类别型变量分别是cat1和cat2,cat1有ABC三种可能取值,cat2有DEF三种可能取值,两个类别型特征做交叉以后生成的新变量就是笛卡尔乘积,共有9种可能取值,具体实现代码如下:

data = pd.read_excel(r'C:\Users\Lenovo\Desktop\test.xlsx')

# cat1:ABC ;cat2:DFT

print (data)

data['cross_cat1_cat2'] = np.where((data['cat1']=='A') & (data['cat2']=='D'),'AD',

np.where((data['cat1'] == 'A') & (data['cat2'] == 'F'), 'AF',

np.where((data['cat1'] == 'A') & (data['cat2']== 'T'), 'AT',

np.where((data['cat1'] == 'B') & (data['cat2'] == 'T'), 'BT',

np.where((data['cat1'] == 'B') & (data['cat2'] == 'F'), 'BF',

np.where((data['cat1'] == 'B') & (data['cat2'] == 'D'), 'BD',

np.where((data['cat1'] == 'C') & (data['cat2'] == 'T'), 'CT',

np.where((data['cat1'] == 'C') & (data['cat2'] == 'F'), 'CF',

np.where((data['cat1'] == 'C') & (data['cat2'] == 'D'), 'CD',"OTHERS" )))))))))

print (data)

最后生成效果如下所示:

Paste_Image.png

持续更新中。。。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值