Python Pandas : Rolling backward function

标签 python python-3.x pandas

我有一个有两列的数据框(即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/

相关文章:

python - pandas DataFrame 中 bool 数组的按行求和

python - Pandas 多行名称到列

python - 将具有可变长度逗号分隔值的 pandas Series 转换为 Dataframe

python - 当索引包含重复数据时添加缺失的 pandas DataFrame 行

python - 使用相关矩阵在大型稀疏矩阵上进行 PCA

python - Azure 函数 HTTP 响应类型,使 API 在调用响应时下载 csv

python - 如何在 Pint 中定义和使用百分比

python - 你如何加入列表中的所有项目?

python - 简单的Python字符串代码\解码脚本问题

python - 为什么空闲会跳过 f = open ('filename' , 'r' )