pandas apply利用两个参数的用法

一个实例中,需要用两个列相除,且要判断除数不为0,求教了大佬,用如下方法解决
apply取出一行的值,再用一个自定义函数。

chengji=[[100,95,100,98],[90,98,0,94],[88,95,98,95],[99,98,97,92],[95,90,96,88],[94,94,93,77]]
data=pd.DataFrame(chengji,columns=['语文','类别','数学','政治'])
print(data.index,data.columns)
print(data,data.dtypes)

data4=data.copy(deep=True)
data4=data4[['语文','数'+'学']]
#data4['数学评级']=0
def sum_test(a,b):
    return a+b
data4['数学'+'评级']=data4.apply(lambda x: sum_test(x['语文'],x['数学']),axis=1)
#df ['sum_value'] = df.apply(lambda x: sum_test(x['列名1'],x['列名2']), axis=1)
print("*"*50,"筛选数学大于95相加")
print(data4)

data4=data.copy(deep=True)
def function(x):
    if x['数学']!=0:
        s=x['语文']/x['数学']
    else:
        s=0   
    return s

data4['result']=data4.apply(function,axis=1)
print(data4)

后来,找到一种方法,先定义结果为零,再判断除数不为零,再计算。

data4=data.copy(deep=True)
data4['result']=0
data4.loc[data4['数学']!=0,'result']=data4['语文']/data4['数'+'学']
print(data4)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值