本文介绍了如何使用python apply / lambda / shift函数基于2列的值获取该特定列的前一行值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有2列(FN1和FN2),因此我必须再创建一列(最终)
I have 2 columns(FN1 and FN2) and based on these i have to create one more column(Final)
FN1 FN2 Final
False False 1
True True 1
False False 1
True False 2
True True 2
False False 1
True True 1
True True 1
-
如果FN1如果为False,则Final将为1。
If FN1 is False, Final will be 1.
如果FN2为True,则我将是Final的先前值。
If FN2 is True i will be the previous value of Final.
但是,如果FN2为False,我需要用
的前一个值(最后加1)更新它(即递增1)But if FN2 is False i need to update it with the previous value ofFinal +1 (i.e. increment by 1)
。我尝试使用
shift()
来做到这一点,但在这种情况下又无济于事。. I tried doing it using
shift()
but again that does not help in this scenario.FN1 FN2 Final False False 1 True True 1 False False 1 True False 2 True True 2 False False 1 True True 1 True True 1
。
推荐答案
使用
np.select
:df1 = df.shift() cond1 = df['FN1'] == False cond2 = (df['FN1']==True) & (df['FN2'] ==True) cond3 = (df['FN1']==True) & (df['FN2'] == False) df['Final'] = np.select([cond1,cond2,cond3], [1, df1['Final'], df1['Final']+1]) print(df)
这篇关于如何使用python apply / lambda / shift函数基于2列的值获取该特定列的前一行值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!