Pandas Dataframe与range / stdev的比较

时间:2016-09-29 04:50:41

标签: python pandas dataframe timestamp range

我必须使用数据框A和B.两者都有一个'datetime'列和另一个公共列X.B更大,因为它每分钟都有X而A在一天中间歇性时间只有X.对于A中的每个'datetime',我想使用B计算前30分钟内X的范围(或stdev)。所以类似:

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用于在B的A时间戳之前的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)

1 个答案:

答案 0 :(得分:0)

这适用于我,但使用循环:

rangex=np.zeros(A.shape[0])
for i,Date in enumerate(A['Date']): temp=B[(B['Date'] > Date-datetime.timedelta(days=0, minutes=30)) & (B['Date'] <=Date)] rangex[i]=temp['input'].max()-temp['input'].min()
A['range']=pd.Series(rangex, index=A.index)