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

如何利用预设股票变动逻辑修改Pandas DataFrame中的股票值?

解决Pandas DataFrame中股票值更新问题

核心思路

不用复杂的if判断逐个匹配,先拆解你的Stocks_change指令字符串,提取关键信息后直接定位DataFrame中的对应行更新即可。

具体步骤

  • 拆解变动指令:把Stocks_change按空格拆分,得到股票名称、涨跌方向、变动幅度三个部分,注意把幅度转成数值类型

    # 示例指令:"AAPL + 5.2"
    stock_name, direction, change_str = Stocks_change.split()
    change_val = float(change_str)
    
  • 计算新价格:

    • 如果变动幅度是百分比(比如+5代表涨5%):
      current_price = df.loc[df['股票名称'] == stock_name, '价格'].iloc[0]
      if direction == '+':
          new_price = current_price * (1 + change_val / 100)
      else:
          new_price = current_price * (1 - change_val / 100)
      
    • 如果变动幅度是绝对值(比如+5代表涨5元):
      current_price = df.loc[df['股票名称'] == stock_name, '价格'].iloc[0]
      new_price = current_price + change_val if direction == '+' else current_price - change_val
      
  • 更新DataFrame:用loc精准定位行和列,避免链式赋值导致的更新失效问题

    df.loc[df['股票名称'] == stock_name, '价格'] = new_price
    

完整示例代码

import pandas as pd

# 初始化股票DataFrame
df = pd.DataFrame({
    '股票名称': ['AAPL', 'GOOG', 'MSFT'],
    '价格': [150.0, 2800.0, 300.0]
})

# 模拟变动指令
Stocks_change = "AAPL + 3.5"

# 执行更新流程
stock_name, direction, change_str = Stocks_change.split()
change_val = float(change_str)

current_price = df.loc[df['股票名称'] == stock_name, '价格'].iloc[0]
new_price = current_price * (1 + change_val / 100) if direction == '+' else current_price * (1 - change_val / 100)

df.loc[df['股票名称'] == stock_name, '价格'] = new_price

print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:35:16