python - pandas-how to apply different function to df.series while the function depending on another series? -




simply speaking, want this:

df.s1.map["a":df.s2+1, "b":df.s2-1] 

however,it won't work because df.s2 not constant.

how can map s1 on df.s2+1 while s1='a',and map s1 on df.s2-1 while s1='b'?

you can use apply using lambda axis = 1 i.e

if have dataframe

df = pd.dataframe({'s1':['a','b','a','a','b'],'s2':[1,3,5,2,4]}) df['s3'] = df.apply(lambda x : x['s2']+1 if x['s1'] == 'a'  else x['s2']-1 ,axis=1 ) 

or take d['s2'] common dictionary , add @ end after mapping.

df['s3'] = df.s1.map({'a':1,'b':-1})+df['s2'] 

output:

    s1  s2  s3 0   1   2  1  b  3   2  2   5   6  3   2   3  4  b  4   3  in [364]:  

output :





wiki

Comments

Popular posts from this blog

Asterisk AGI Python Script to Dialplan does not work -

kotlin - Out-projected type in generic interface prohibits the use of metod with generic parameter -

python - Read npy file directly from S3 StreamingBody -