pandas-如何将功能应用于df.series而功能依赖于另一个系列?

时间:2017-08-25 03:07:29

标签: python pandas

简单来说,我想这样做:

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

但是,它不起作用,因为df.s2不是常量。

如何s1 df.s2+1 s1='a' s1df.s2-1 s1='b' {{1}}?{/ 1}}

1 个答案:

答案 0 :(得分:1)

您可以apply使用lambdaaxis = 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]:

输出: