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

如何定位Highest_Returns值对应的来源列?Python pandas求助

问题描述

我已经用PortReturns["Highest_Returns"] = PortReturns.max(axis=1)算出每日10只股票的最高收益,现在需要识别Highest_Returns列中每个值对应的来源列,把列标签填充到Highest_Returns_Ticker列。

现有数据示例:

Date  Returns_Apple  ... Returns_UL Highest_Returns  Highest_Returns_Ticker

0     2013-02-25            NaN  ...       NaN             NaN                   Input
1     2013-02-26       0.013934  ... -0.005093        0.013934                   Input
...          ...            ...  ...       ...             ...                     ...
[2519 rows x 12 columns]

预期结果:

Date  Returns_Apple  ... Returns_UL Highest_Returns  Highest_Returns_Ticker

0     2013-02-25            NaN  ...       NaN             NaN                      NaN
1     2013-02-26       0.013934  ... -0.005093        0.013934            Returns_Apple
...          ...            ...  ...       ...             ...                     ...
[2519 rows x 12 columns]

我推测需要写函数匹配Highest_Returns值和对应列并返回列标签,作为Python新手,求帮助和解释。


解决方案

不用自定义函数,Pandas内置的idxmax()方法就能直接解决问题,步骤如下:

1. 筛选股票收益列

先明确哪些列是股票收益数据(比如Returns_Apple这类),排除Date、Highest_Returns等无关列:

# 筛选所有以"Returns_"开头的列
return_cols = PortReturns.columns[PortReturns.columns.str.startswith("Returns_")]

2. 填充对应列名到目标列

用idxmax(axis=1)按行查找最大值所在的列标签,直接赋值给Highest_Returns_Ticker:

PortReturns["Highest_Returns_Ticker"] = PortReturns[return_cols].idxmax(axis=1)

3. 自动处理NaN值

如果某一行所有收益列都是NaN(比如示例第0行),idxmax()会自动返回NaN,正好符合预期的空值效果,无需额外处理。

完整代码

# 筛选收益列
return_cols = PortReturns.columns[PortReturns.columns.str.startswith("Returns_")]
# 计算每日最高收益(已计算过可跳过此行)
PortReturns["Highest_Returns"] = PortReturns[return_cols].max(axis=1)
# 填充对应股票列名
PortReturns["Highest_Returns_Ticker"] = PortReturns[return_cols].idxmax(axis=1)

代码说明

  • str.startswith("Returns_"):精准定位所有股票收益列,避免误操作其他列
  • idxmax(axis=1):按行维度查找最大值对应的列标签,直接返回列名,省去手动匹配的麻烦
  • Pandas内置方法经过优化,处理2500多行数据效率很高,不用写循环或复杂逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:59:56