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

如何在DataFrame中插入带条件函数的买卖价差列?

问题分析与解决

原代码存在三个核心问题:

  • 判断逻辑错误:type in mt_trades['type'] == 'BUY'是错误的条件写法,你需要判断的是当前行的交易类型是否为BUY,而非判断参数是否在整列的判断结果集合中。
  • 函数无返回值:计算价差后没有用return返回结果,导致apply无法获取有效计算值。
  • 错误操作整个DataFrame:函数里直接操作全表,而非处理当前行的单条数据。

修正方案1:使用apply逐行处理

修改函数逻辑,让它接收每行数据,判断当前行交易类型后返回计算结果:

def pl_gap(row):
    if row['type'] == 'BUY':
        return row['close_price'] - row['open_price']
    else:
        return row['open_price'] - row['close_price']

mt_trades['pl_gap'] = mt_trades.apply(pl_gap, axis=1)

注意必须添加axis=1,指定按行应用函数。

更高效方案:使用numpy.where向量化运算

Pandas中逐行apply效率偏低,推荐用向量化运算直接处理整列,代码更简洁且性能更优:

import numpy as np

mt_trades['pl_gap'] = np.where(
    mt_trades['type'] == 'BUY',
    mt_trades['close_price'] - mt_trades['open_price'],
    mt_trades['open_price'] - mt_trades['close_price']
)

这种方式直接对整列批量运算,适合大数据量场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:20:08