python-3.x - Pandas - 根据列中的先前值设置值
问题描述
我有一个包含降雨数据的数据集。我想使用 Pandas 设置一个运行雨水蓄能器。
这就是我所拥有的:
def determinePrev(df):
#NEED TO CHANGE VALUE TO RUNNING VVVVVV#
df.loc[df['Rain'] > 0, 'Running']=df['Rain'].shift(1)+df['Rain']
return df
像这样运行它是可行的,但只有在连续两天下雨的情况下才合适。当用 'Running' 替换后一个 'Rain' 时,我得到 KeyError: 'Running'。
我一直在努力寻找解决方案,但感觉就像我无处可去。我对 Python 比较陌生,所以如果你有解决方案,你能提供尽可能多的细节吗?
谢谢!
编辑:我应该补充一点,我不想计算连续的天数,而是测量连续下雨天的降雨量。
编辑#2:
解决方案
使用Series.eq
和Series.cumsum
计算c
用于对连续雨天进行分组的累积级数,然后使用对这个级数上Series.groupby
的列进行分组Rain
并使用变换函数cumsum
:
c = df['Rain'].eq(0).cumsum()
df['Running'] = df['Rain'].groupby(c).cumsum()
结果:
# print(df)
Rain Running
0 0.0 0.0
1 0.8 0.8
2 2.4 3.2
3 19.4 22.6
4 6.2 28.8
5 1.0 29.8
6 0.0 0.0
推荐阅读
- angular - ng build 在应用优化后需要时间
- excel - 如何在excel中拆分并获取第一个日期和时间
- javascript - 避免对子元素执行操作
- python - 强制 Django Admin 正确调用 .update() 而不是 .save() 以避免触发用于创建对象的检查
- html - css输入样式在firefox mobile上不起作用
- javascript - JS 中的日期评估
- css - 如何修复相对于可滚动容器的 div?
- javascript - 用可用的元素和表单构建一个网格 Popper Js 和什么?
- javascript - 反应:在状态下访问数组时变得未定义
- javascript - React 方法返回值不会在 render() 中显示