Dataframe 在公共列上组合两个表的最快方法(基于最近的时间戳和相同的ID)

Dataframe 在公共列上组合两个表的最快方法(基于最近的时间戳和相同的ID),dataframe,merge,bigdata,Dataframe,Merge,Bigdata,我正在尝试组合列timestamp和ID上的两个数据帧(约1000万行)。由于两个数据帧对于相同的ID没有相同的时间戳,我需要使用一个名为“map_RSRP”的函数来组合这两个使用条件。然而,下面的代码使用我的个人笔记本加载1000万行数据帧需要很长时间(几天时间)。是否有任何方法/代码可用于加速处理如此大的数据帧 Dataframe RTT列:['TIMESTAMP','ID','RTT'] 数据帧RSRP列:['TIMESTAMP','ID','RSRP'] 结果数据帧列:['TIMEST

我正在尝试组合列timestamp和ID上的两个数据帧(约1000万行)。由于两个数据帧对于相同的ID没有相同的时间戳,我需要使用一个名为“map_RSRP”的函数来组合这两个使用条件。然而,下面的代码使用我的个人笔记本加载1000万行数据帧需要很长时间(几天时间)。是否有任何方法/代码可用于加速处理如此大的数据帧

  • Dataframe RTT列:['TIMESTAMP','ID','RTT']
  • 数据帧RSRP列:['TIMESTAMP','ID','RSRP']
  • 结果数据帧列:['TIMESTAMP','ID','RTT','RSRP']
以下是我的代码:

def map_RSRP(timestamp, id):
    rsrp = np.nan
    time_diff = np.nan

    past_5mins = timestamp - timedelta(minutes = 5)
    future_5mins = timestamp + timedelta(minutes = 5)
    
    #Get the RSRP data for same ID with timestamp within 5 minutes difference from RTT timestamp
    df_rsrp = df_RSRP.loc[(df_RSRP['ID'] == id) & 
                       (df_RSRP['TIMESTAMP'] >= past_5mins) & 
                       (df_RSRP['TIMESTAMP'] <= future_5mins)]
    
    df_rsrp['Time Difference (minutes)'] = ((df_rsrp['TIMESTAMP'] - timestamp).dt.total_seconds()/60).astype(int)
    if len(df_rsrp) > 0:
        time_nearest = abs(df_rsrp['Time Difference (minutes)']).min()
        df_rsrp = df_rsrp[abs(df_rsrp['Time Difference (minutes)']) == time_nearest]
        rsrp = df_rsrp['RSRP'].mean()
    return rsrp

#Result dataframe columns: ['TIMESTAMP', 'ID', 'RTT', 'RSRP']
df_rtt['RSRP'] = df_rtt.apply(lambda x : pd.Series(map_RSRP(x['TIMESTAMP'],x['ID'])), axis = 1)
def map_RSRP(时间戳,id):
rsrp=np.nan
时间差=np.nan
过去5分钟=时间戳-时间增量(分钟=5)
未来5分钟=时间戳+时间增量(分钟=5)
#在与RTT时间戳相差5分钟内获取具有时间戳的相同ID的RSRP数据
df_rsrp=df_rsrp.loc[(df_rsrp['ID']==ID)&
(df_RSRP['TIMESTAMP']>=过去5分钟)和
(df_RSRP['TIMESTAMP']0:
最接近的时间=abs(df_rsrp[‘时差(分钟)’).min()
df_rsrp=df_rsrp[abs(df_rsrp[‘时差(分钟)’)==最近的时间]
rsrp=df_rsrp['rsrp'].平均值()
返回rsrp
#结果数据帧列:['TIMESTAMP','ID','RTT','RSRP']
df_rtt['RSRP']=df_rtt.apply(λx:pd.Series(map_RSRP(x['TIMESTAMP'],x['ID'])),轴=1)
可能会有帮助吗?请检查
公差=
参数