熊猫-如何将不同的功能应用于DF.Series,而该功能依赖于另一个系列?



简单地说,我想这样做:

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

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

如何在s1='a'时在df.s2+1上映射s1,并在s1='b'时在df.s2-1上映射s1

您可以使用applylambdaaxis = 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 一 1 2 1 b 3 2 2 A 5 6 3 一 2 3 4 b 4 3 在 [364]

:输出 :

相关内容

  • 没有找到相关文章

最新更新