python-3.x - 行回计算或通过新的先前值更新行值
问题描述
我有一个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
解决方案
推荐阅读
- jmeter - 设置 JMeter 在 10 秒后启动线程组
- matlab - 沿某个方向用渐变颜色填充多边形
- python - Pandas str.replace 方法正则表达式标志引发不一致的异常
- corda - 来自签名 jar 中冲突 Cordapp 类的 SecurityException
- python - 登录表单是否应该受到 CSRF 的保护?
- php - Laravel 5.8 - 读取并执行从 DBeaver 转储的 SQL 文件,遇到字符串格式问题,主要是在 INSERT 之前
- reactjs - 使用 React Navigation 将道具从 StackNavigator 传递到屏幕
- angular - 如何对 () => void 类型的变量进行单元测试
- visual-studio - 如何在 Visual Studio 的 C++/WinRT 中添加新的 XAML“页面”及其关联的代码隐藏文件?
- javascript - 错误 RangeError:使用 setTimeout 时超出了最大调用堆栈大小