You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas高效合并标签DataFrame与特征DataFrame?

高效合并标签与特征DataFrame的实现方案

针对10万+行的大规模数据,核心思路是用矢量化操作替代循环,利用pandas/numpy的底层优化实现高效匹配:

步骤1:生成特征数据的时间匹配键

特征DataFrame的浮点Time列,可直接取整数部分得到对应标签的整数时间(0~1秒→0,1~2秒→1,以此类推),用矢量化方法实现:

import pandas as pd

# 假设特征DataFrame为df_feature,标签DataFrame为df_label
df_feature['match_time'] = df_feature['Time'].astype(int)
# 若需严格匹配左闭右开区间(如0<=Time<1对应标签0),astype(int)完全适用

步骤2:高效合并数据

根据标签数据的结构,选择两种高效方案:

方案A:字典映射(最快,适用于标签Time无重复)

先将标签数据转为字典,再通过映射添加标签列:

# 构建Time到Label的映射字典
label_dict = df_label.set_index('Time')['Label'].to_dict()
# 批量映射标签
df_feature['Label'] = df_feature['match_time'].map(label_dict)
# 清理临时列
df_feature.drop(columns=['match_time'], inplace=True)

方案B:Merge合并(适用于标签Time有重复或需保留标签其他列)

利用pandas的merge方法(基于哈希表实现,效率远高于循环匹配):

merged_df = pd.merge(
    df_feature,
    df_label,
    left_on='match_time',
    right_on='Time',
    how='left'  # 保留所有特征数据,无匹配则标签为NaN
)
# 清理冗余列并重命名
merged_df.rename(columns={'Time_x': 'Time'}, inplace=True)
merged_df.drop(columns=['match_time', 'Time_y'], inplace=True)

效率说明

上述操作均为pandas/numpy的矢量化操作,底层由C语言实现,处理10万+行数据仅需毫秒级时间,完全避免了Python循环的性能瓶颈。

内容的提问来源于stack exchange,提问作者Fang660914

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:33:57