小编ped*_*ton的帖子

基于不规则的时间间隔合并pandas DataFrames

我想知道如何加速两个数据帧的合并.其中一个数据帧具有带时间戳的数据点(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)

merge group-by time-series python-2.7 pandas

4
推荐指数
1
解决办法
2394
查看次数

标签 统计

group-by ×1

merge ×1

pandas ×1

python-2.7 ×1

time-series ×1