【发布时间】:2016-09-29 04:50:41
【问题描述】:
我必须使用数据框 A 和 B。两者都有一个“日期时间”列和另一个公共列 X。B 更大,因为它每分钟都有 X,而 A 在一天中的间歇时间只有 X。对于 A 中的每个“日期时间”,我想使用 B 计算前 30 分钟内 X 的范围(或标准差)。所以类似于:
For i,time in enumerate(A['time']):
temp=B[(B['time'] > time -timedelta(days=0, minutes=30)) and (B['time'] <=time]
range[i]=temp.max-temp.min
这里的 temp 旨在在 A 在 B 中的时间戳之前 30 分钟内对所有数据进行快照。有没有一种简单的方法,也许不需要循环来做到这一点?请注意,A 和 B 的大小不同。
示例 A:(只有少数输出与输入一起可用)
Date input output
2015-01-02 20:48:00-00:00 1120 343
2015-01-02 21:25:00-00:00 1345 365
示例 B:(所有输入可用,但没有输出)
Date input
2014-11-02 00:32:00-00:00 1542
2014-11-02 00:33:00-00:00 1285
示例输出:
Date input output Range_input_previous 30 min
2015-01-02 20:48:00-00:00 1120 343 ??(use table B)
2015-01-02 21:25:00-00:00 1345 365 ??(use table B)
【问题讨论】:
-
你能提供两个数据框的样本吗?
-
已添加。让我知道它是否有帮助
-
你能添加想要的输出吗?
-
已添加。让我知道它是否有帮助
-
谢谢。我认为最好的方法是在样本中使用这样的值来返回一些数字。
标签: python pandas dataframe timestamp range