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

Pandas使用.loc取基准值后全列批量计算相对收益率的实现方法

问题原因

你当前代码获取的bmk是带索引的Pandas Series对象,Pandas在执行Series和Series的运算时会自动按索引对齐匹配,只有和bmk索引相同的行(即ID为ASX的第3行)能得到计算结果,其余行因索引不匹配都会返回NaN。

解决方案

只需将bmk转换为单个标量值,即可实现全列批量减法计算,常用有两种写法可选:

  • 使用.iloc[0]提取Series的首个值
  • 使用.item()直接提取标量数值

修改后的完整代码如下:

import pandas as pd

data = {'ID': ['ABC', 'DEF', 'GHI', 'ASX'],
        'Ret': [5, 7, 10, 6]}
frame = pd.DataFrame(data)

# 提取基准值为标量,两种写法二选一即可
bmk = frame.loc[frame['ID'] == 'ASX', 'Ret'].iloc[0]
# bmk = frame.loc[frame['ID'] == 'ASX', 'Ret'].item()

frame['Rel Ret'] = frame['Ret'] - bmk
print(frame)

运行后输出结果如下:

ID  Ret  Rel Ret
0  ABC    5       -1
1  DEF    7        1
2  GHI   10        4
3  ASX    6        0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:00:01