首页 > 解决方案 > 行回计算或通过新的先前值更新行值

问题描述

我有一个dataframe并且需要有条件地更新我的列值,但最重要的是必须为每个迭代器更新它。

最新,我改变了我的逻辑,但它又没用。我需要 Python 方面的帮助!!!!

我已经尝试了很多功能,例如shift(), lag... 但它们不保存前一行的更新值。由于性能原因,我不想尝试 while 或其他循环技术。请帮助快速和高性能计算。

import pandas as pd
import numpy as np


data = {'GROUP':['A', 'A', 'A', 'A','A'], 'DURUM':['DEL', 'DEL', 'DEL', 'DEL', 'DEL'], 'SV':[0,0,0,0,0], 'V':[0,0,0,0,0]} 

data=pd.DataFrame(data)

def update_frame(data):
    last_expected = None
    def apply_logic(row):
        nonlocal last_expected
        last_row_id =  row.name - 1
        if row.name == 0:
            last_expected = row['DURUM']
            return last_expected
        last_row = data.iloc[[last_row_id]].iloc[0].to_dict()
        last_expected = 'PHA' if last_row['GROUP'] == row['GROUP'] and last_row['DURUM']=='DEL' and row['SV']>= 0.0 and row['V']==0.0  else row['DURUM']
        return last_expected
    return apply_logic
data['DURUM']= data.apply(update_frame(data), axis=1)

预计分别是DURUM=DEL,PHA,DEL,PHA,DEL

实际分别是DURUM=DEL PHA,PHA,PHA,PHA,PHA

标签: python-3.x

解决方案


推荐阅读