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

如何筛选dataframeAudio:仅保留与dataframeHandRight匹配的Recording+Timestamp行?

过滤DataFrame中多列组合匹配的行

针对你的需求,这里提供两种高效的Pandas实现方法,仅保留dataframeAudio中Recording和Timestamp组合在dataframeHandRight里存在的行:

方法1:内连接(Merge)

通过提取手部数据的匹配列,与音频数据做内连接,自动过滤掉不匹配的行:

# 提取手部数据中用于匹配的唯一组合列
hand_matches = dataframeHandRight[['Recording', 'Timestamp']].drop_duplicates()
# 内连接过滤音频数据,仅保留两边都存在的行
filtered_audio = dataframeAudio.merge(hand_matches, on=['Recording', 'Timestamp'], how='inner')
  • drop_duplicates() 用来避免手部数据中重复组合导致音频数据被重复匹配
  • how='inner' 是内连接的核心,只保留两表共有的行

方法2:元组匹配(isin)

将两列的组合转换成元组,直接用isin判断是否存在:

# 把手部数据的两列组合转为元组列表
valid_combinations = list(dataframeHandRight[['Recording', 'Timestamp']].itertuples(index=False, name=None))
# 过滤音频数据,仅保留组合存在的行
filtered_audio = dataframeAudio[dataframeAudio[['Recording', 'Timestamp']].apply(tuple, axis=1).isin(valid_combinations)]
  • itertuples(index=False, name=None) 快速把每行转为无索引的元组
  • apply(tuple, axis=1) 将音频数据的每行两列转为元组,再用isin匹配

注意事项

  • 确保两表中Recording和Timestamp的数据类型完全一致(比如一个是字符串、一个是数值会匹配失败)
  • 如果列名不同,需要先重命名对齐(比如dataframeAudio.rename(columns={'RecID': 'Recording'}, inplace=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:00:58