我有一个有两列的数据框(即audit_value和rolling_sum)。 Rolling_sum_3 列包含最后 3 个审核值的滚动总和。数据框如下所示:
df1
audit_value rolling_sum_3 Fixed_audit
0 4 NA 3
1 5 NA 3
2 3 12 3
3 1 9 1
4 2 6 2
5 1 4 1
6 4 7 3
现在我想对rolling_sum_3列应用条件并查找该值是否大于5,如果是,则查看audit_value的最后3个值并找到大于3的值。如果其中的任何值audit_value 的最后 3 个值大于 3,则将这些值替换为 3 并放入新列(称为fixed_audit),否则在新列中保留audit_value 的旧值。我在 pandas 中找不到任何执行回滚功能的内置函数。谁能建议在某些列上执行回滚功能的简单有效的方法?
最佳答案
df1['fixed_audit'] = df1['audit_value']
for i in range(3, len(df1)):
if(df1.iloc[i].rolling_sum_3 > 5):
df1.loc[i-1,'fixed_audit'] = 3 if df1.loc[i-1,'audit_value'] > 3 else df1.loc[i-1,'audit_value']
df1.loc[i-2,'fixed_audit'] = 3 if df1.loc[i-2,'audit_value'] > 3 else df1.loc[i-2,'audit_value']
df1.loc[i-3,'fixed_audit'] = 3 if df1.loc[i-3,'audit_value'] > 3 else df1.loc[i-3,'audit_value']
关于Python Pandas : Rolling backward function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59691720/