迭代Pandas数据帧单元格,根据其他单元格值计算运行总数

2024-10-03 23:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过Python中的一个系统来计算质量平衡。例如,我希望在我的日常代码中重复使用35000个数据。在

我为CSV捕获每日数据:

  • 日期
  • 水流
  • 降雨
  • 流入

我要计算新的数据列,这些列同时查找前一天和第二天的数据。例如,我要计算表示以下内容的其他列:

  • 旁路-绕过设施(即大于处理能力)进入潮湿天气池塘的流入部分
  • 再循环流量-如果流入的电流小于处理能力,并且如果水池容积大于等于0,则泵从潮湿天气池塘流回设施进行再处理
  • 灌溉-如果前3天降雨量小于等于10毫米,而接下来的5天没有降雨,则灌溉一定量的水
  • 前池容积-前池容积+旁路-循环流灌溉

我是Python的新手,我想我应该利用Pandas来获取这些数据,因为我可以将所有数据保存在一起。我用过np.哪里对于使用同一行上的单元格的简单条件计算。在

bal['Q_IL2TR'] = np.where(bal['Q_PS2IL']<FullTreatementFloMLDs, bal['Q_PS2IL'], FullTreatementFloMLDs)

是否可以迭代一个数据帧,并基于前一行/后一行的列中的单元格创建新的列值?也是解决这个问题的最好办法。在


Tags: csv数据代码系统np质量能力天气
1条回答
网友
1楼 · 发布于 2024-10-03 23:24:04

不要从遍历数据帧开始。太慢了。相反,试着用向量来做任何事情。在

顺便说一下,这个:

bal['Q_IL2TR'] = np.where(bal['Q_PS2IL']<FullTreatementFloMLDs, bal['Q_PS2IL'], FullTreatementFloMLDs)

应更简单地写为:

^{pr2}$

至于这样的事情:

Irrigation - If rainfall in previous 3 days <10mm AND no rainfall is in following 5 days, irrigate a set volume

您可以创建窗口大小为3和5的滚动和,将其作为新列存储在数据帧中,然后使用它们来创建条件:

last3 = df.Rain.rolling(3, closed=False).sum() # n.b. you might want 4
next5 = df.Rain.rolling(5, closed=False).sum()
df['Irrigate'] = (last3 < 10) & (next5 == 0)

相关问题 更多 >