当函数依赖于另一个系列时,如何对df.series应用不同的函数?

2024-03-29 08:41:32 发布

您现在位置:Python中文网/ 问答频道 /正文

简单地说,我想这样做:

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

但是,它不会工作,因为df.s2不是常量

如何将s1映射到df.s2+1s1='a',将s1映射到df.s2-1s1='b'


Tags: mapdf常量s2s1
1条回答
网友
1楼 · 发布于 2024-03-29 08:41:32

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

输出:

相关问题 更多 >