DataFrame.apply
(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds):
其中axis=0对行操作;axis=1代表对列操作
def add_crits(crit1,crit2,crit3):
return (crit1+crit2+crit3)
data['crits'] = data.apply(lambda row: add_crits(row['crit1'],row['crit2'],row['crit3']),axis=1)
查看结果:
print(data[['crits','crit1','crit2','crit3']].head())
#crits crit1 crit2 crit3
#0 3 1 1 1
#1 3 1 1 1
#2 3 1 1 1
#3 3 1 1 1
#4 3 1 1 1
根据一列值更改另一列:
#如果'propvalue'值为-99,且property为0,将-99改为0,否则改为propvalue正常值(大于等于0)的中位数value_median
def change_propvalue(x,y):
if x == 0 and y==-99:
y = 0
elif (x==1 or x==-9) and y == -99:
y = value_median
return y
data['propvalue']=data.apply(lambda row: change_propvalue(row['property'],row['propvalue']),axis=1)
groupby如下所示,根据"attack_level"进行分组,求每组"attack_score"的均值
x= data.groupby(by=['attack_level'])['attack_score'].mean()
print(x)
#attack_level
#0 3.973406
#1 1.362644
#2 2.255224
#3 4.837559
#4 -0.754182