我想知道如何加速两个数据帧的合并.其中一个数据帧具有带时间戳的数据点(valuecol).
import pandas as pd
import numpy as np
data = pd.DataFrame({'time':np.sort(np.random.uniform(0,100,size=50)),
'value':np.random.uniform(-1,1,size=50)})
Run Code Online (Sandbox Code Playgroud)
另一个具有时间间隔的信息(start_time,end_time,和相关联的interval_id).
intervals = pd.DataFrame({'interval_id':np.arange(9),
'start_time':np.random.uniform(0,5,size=9) + np.arange(0,90,10),
'end_time':np.random.uniform(5,10,size=9) + np.arange(0,90,10)})
Run Code Online (Sandbox Code Playgroud)
我想比for下面的循环更有效地合并这两个数据帧:
data['interval_id'] = np.nan
for index, ser in intervals.iterrows():
in_interval = (data['time'] >= ser['start_time']) & \
(data['time'] <= ser['end_time'])
data['interval_id'][in_interval] = ser['interval_id']
result = data.merge(intervals, how='outer').sort('time').reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)
我一直想象我能够使用pandas 时间序列功能,比如日期范围或TimeGrouper,但我还没有找到比上面更多的pythonic(pandas-y?).
示例结果:
time value interval_id start_time end_time
0 0.575976 0.022727 NaN NaN NaN
1 4.607545 0.222568 0 3.618715 8.294847 …Run Code Online (Sandbox Code Playgroud)