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

百万行股票数据集无循环分类需求:区分买入/卖出份额

大规模股票数据集高效拆分买入/卖出列方案

核心思路

用矢量化操作替代循环,利用pandas/numpy底层的C实现逻辑,处理百万级数据仅需几秒,完全规避Python循环的低效问题。

具体实现(Pandas版本)

假设你的数据集包含「类型」和「份额」两列,按以下步骤操作:

  1. 导入工具并读取数据
import pandas as pd

# 读取数据,优先用Parquet/Feather等高效格式,CSV也可
df = pd.read_csv('stock_data.csv')
  1. 快速生成买入/卖出列
    直接用矢量化条件赋值,无需遍历每一行:
# 初始化两列为0
df['买入'] = 0
df['卖出'] = 0

# 类型为P时,把份额赋值给买入列
df.loc[df['类型'] == 'P', '买入'] = df['份额']
# 类型非P时,把份额赋值给卖出列
df.loc[df['类型'] != 'P', '卖出'] = df['份额']

# 处理空行/空值:整行空的话两列保持0,单独份额空的话也填0
df[['买入', '卖出']] = df[['买入', '卖出']].fillna(0)

更简洁的写法(Numpy Where)

一行搞定列赋值,同样是矢量化操作:

import numpy as np

df['买入'] = np.where((df['类型'] == 'P') & df['份额'].notna(), df['份额'], 0)
df['卖出'] = np.where((df['类型'] != 'P') & df['份额'].notna(), df['份额'], 0)

超大规模数据优化(千万+行)

如果数据量突破内存上限,用Dask做分块并行处理:

import dask.dataframe as dd

# 分块读取数据
ddf = dd.read_csv('stock_data.csv')
# 同样的矢量化逻辑,Dask自动分块处理
ddf['买入'] = np.where((ddf['类型'] == 'P') & ddf['份额'].notna(), ddf['份额'], 0)
ddf['卖出'] = np.where((ddf['类型'] != 'P') & ddf['份额'].notna(), ddf['份额'], 0)
# 导出结果
ddf.to_csv('processed_stock_data.csv', single_file=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:15:38