You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何用Pandas按股票代码计算各公司交易年限并生成新列

解决Pandas按股票分组计算交易年限的问题

你的问题核心在于之前的代码没有针对每个股票分组计算年份差,而是取了整个DataFrame的全局最大/最小年份,所以得到的结果不符合预期。下面是最简洁高效的实现方法:

正确代码实现

我们可以用Pandas的groupby+transform组合,transform会把分组计算的结果自动广播回原DataFrame的每一行,完美匹配你需要给每一行新增对应股票交易年限的需求:

# 直接按Symbol分组,对Date列计算年份差并广播到每一行
mydata['Yrs_Publ_Trd'] = mydata.groupby('Symbol')['Date'].transform(
    lambda x: x.dt.year.max() - x.dt.year.min()
)

为什么之前的代码不对?

你之前写的循环里,mydata.Date.dt.year.max()mydata.Date.dt.year.min()都是针对整个DataFrame的全局统计值,不是每个Symbol分组内的。比如不管循环到哪个Symbol,你取的都是所有股票里最早和最晚的年份差,自然得不到每个股票自己的交易年限。

验证结果

运行上面的代码后,你的DataFrame就会新增Yrs_Publ_Trd列,每个Symbol对应的所有行都会显示该股票最早与最晚交易年份的差值,和你预期的结果一致。

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

火山引擎 最新活动