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

如何使用pandas基于另一个dataframe筛选符合条件的股票数据行

Pandas多DataFrame按股票代码筛选实现方案

小体量数据(10万行以内)最简实现

直接用pandas内置的isin()方法完成布尔索引筛选即可,代码简洁易读,完全满足小数据场景需求:

  • 变量约定:完整股票数据DataFrame为df_full,目标股票代码DataFrame为df_target,股票代码列名统一为ticker_symbol
  • 实现代码:
# 单行完成筛选,如需重置索引可追加 .reset_index(drop=True)
df_filtered = df_full[df_full['ticker_symbol'].isin(df_target['ticker_symbol'])]

可扩展高效实现(百万行及以上大数据场景)

针对数据量持续增长的场景,可通过以下优化方案提升执行效率,最高可适配TB级数据处理:

方案1:集合查询优化

isin()方法传入集合的成员查询时间复杂度为O(1),远高于传入Series的查询效率,数据量超过10万行时性能提升明显:

# 先将目标股票代码转为集合
target_set = set(df_target['ticker_symbol'].tolist())
df_filtered = df_full[df_full['ticker_symbol'].isin(target_set)]

方案2:内连接merge优化

如果后续需要关联第二个DataFrame的其他字段,使用pandas内置的merge内连接操作效率更高,底层做了大量向量化优化,大数据场景下性能优于isin():

df_filtered = pd.merge(
    left=df_full,
    right=df_target,
    on='ticker_symbol',
    how='inner'
)

如果两边股票代码列名不一致,可通过left_on、right_on参数分别指定关联列。

超大规模数据适配方案

当数据量超过内存承载上限时,可使用Dask框架替代pandas完成计算,Dask语法和pandas几乎完全兼容,无需大规模修改代码即可实现分布式并行计算,支持TB级数据处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:54:04