简单来说,我想这样做:
df.s1.map["a":df.s2+1, "b":df.s2-1]
但是,它不起作用,因为df.s2
不是常量。
如何s1
df.s2+1
s1='a'
s1
,df.s2-1
s1='b'
{{1}}?{/ 1}}
答案 0 :(得分:1)
您可以apply
使用lambda
与axis = 1
即
如果您有数据框
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 )
或者从字典中取d ['s2'] common,然后在映射后将其添加到最后。
df['s3'] = df.s1.map({'a':1,'b':-1})+df['s2']
输出:
s1 s2 s3 0 a 1 2 1 b 3 2 2 a 5 6 3 a 2 3 4 b 4 3 In [364]:
输出: