首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫DataFrame的每个时间框架降水量之和

熊猫DataFrame的每个时间框架降水量之和
EN

Stack Overflow用户
提问于 2014-07-05 21:19:50
回答 1查看 255关注 0票数 1

我有一只熊猫的DateTime指数。数据间隔为5分钟。每一个我都有来自hellmann 降水计的降水数据。我所拥有的数据并没有以毫米表示实际降水量,而是显示了水位计中的水高度。因此,如果我想要每小时的降水数据,我需要检查该小时内的所有行,如果在当前和之前的测量值之间存在一个增量。如果是这样的话,就把它总结一下。但还有一个警告,如果水表中的水达到100毫米,表将自动清空,整个过程从一开始就开始。

如果tprep - (tprep-1) >0,则取delta 如果tprep < ( tprep -1)取100 - (tprep-1) +tprep 如果tprep = (tprep-1)什么也不做

数据:

代码语言:javascript
运行
复制
8:00 78
8:05 78
8:10 82
8:15 82
8:20 82
8:25 90
8:30 91
8:35 91
8:40 98
8:45  3
8:50  3
8:55  5

这将使这个小时的降雨量达到27毫米。当然,它可能在时间范围内跳过100倍以上,特别是当时间范围更大的时候。有谁知道从这样一个数据集中获取降水量之和的有效方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-06 01:50:11

您的所有三个条件都可以描述为一个delta = (100 + tprep - (tprep-1)) mod 100

甚至像delta = (tprep - (tprep-1)) mod 100一样

代码语言:javascript
运行
复制
import pandas as pd
from StringIO import StringIO

data = """8:00 78
8:05 78
8:10 82
8:15 82
8:20 82
8:25 90
8:30 91
8:35 91
8:40 98
8:45 3
8:50 3
8:55 5"""

df = pd.read_csv(StringIO(data), sep=' ' , header=None)

df[1] = df[1].apply(int)

现在我有DataFrame工作了

代码语言:javascript
运行
复制
df['diff'] = df[1].diff()
df['diff_modulo'] = df['diff'].mod(100)

print df

代码语言:javascript
运行
复制
       0   1  diff  diff_modulo
0   8:00  78   NaN          NaN
1   8:05  78     0            0
2   8:10  82     4            4
3   8:15  82     0            0
4   8:20  82     0            0
5   8:25  90     8            8
6   8:30  91     1            1
7   8:35  91     0            0
8   8:40  98     7            7
9   8:45   3   -95            5
10  8:50   3     0            0
11  8:55   5     2            2

代码语言:javascript
运行
复制
print df['diff_modulo'].sum()

代码语言:javascript
运行
复制
27.0

你当然可以一蹴而就

代码语言:javascript
运行
复制
print df[1].diff().mod(100).sum()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24590664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档