首页 > 解决方案 > 如何使用 python apply/lambda/shift 函数根据 2 列的值获取该特定列的前一行值?

问题描述

我有 2 列(FN1 和 FN2),基于这些我必须再创建一个列(最终)

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

. 我尝试使用shift()但在这种情况下再次没有帮助。

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

.

标签: pythonpandasdataframe

解决方案


使用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)

推荐阅读