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

如何按Symbol分组计算DataFrame每日percent change并替换Close列

问题描述

现有如下结构的DataFrame:

Date  Close Symbol
0 2018-03-05  44.21   AAPL
1 2018-03-06  44.17   AAPL
2 2018-03-07  43.76   AAPL
3 2018-03-08  44.24   AAPL
4 2018-03-09  44.99   AAPL
5 2018-03-12  45.43   AAPL
6 2018-03-13  44.99   AAPL
7 2018-03-14  44.61   AAPL
8 2018-03-15  44.66   AAPL
9 2018-03-16  44.51   AAPL
...
2506 2023-02-16  50.99   CSCO
2507 2023-02-17  50.77   CSCO
2508 2023-02-21  49.69   CSCO
2509 2023-02-22  49.31   CSCO
2510 2023-02-23  49.21   CSCO
2511 2023-02-24  48.48   CSCO
2512 2023-02-27  48.73   CSCO
2513 2023-02-28  48.42   CSCO
2514 2023-03-01  48.34   CSCO
2515 2023-03-02  48.53   CSCO

需求:按每个Symbol计算每日涨跌幅(percent change),用该值替换Close列,最终返回Date、Close、Symbol格式的结果。曾尝试用groupby方法但未成功。

解决方案

用groupby结合pct_change()就能实现需求,直接看代码:

import pandas as pd

# 假设你的DataFrame名为df
df['Close'] = df.groupby('Symbol')['Close'].pct_change()

# 按要求输出指定列
result = df[['Date', 'Close', 'Symbol']]
print(result)

关键说明

  • groupby('Symbol'):按股票代码分组,确保每个股票的涨跌幅独立计算,不会与其他股票数据混淆
  • pct_change():自动计算当前行与前一行的百分比变化,公式为(当前值 - 前一天值)/前一天值
  • 每组的第一行结果会是NaN(无前置数据),如果需要填充该值,比如填充0,可修改为:
df['Close'] = df.groupby('Symbol')['Close'].pct_change().fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:15:06