python - 进行计算,使用多行,熊猫
问题描述
扩展我之前的问题。只用熊猫返回一年中的最后一天?
我现在的桌子是这个
表的名称是 last_six_years
symbol date close
44 MMM 2014-12-31 139.6180
45 MMM 2015-12-31 131.3644
46 MMM 2016-12-30 159.8925
47 MMM 2017-12-29 215.7010
48 MMM 2018-12-31 179.2494
49 MMM 2019-12-31 171.5581
我需要创建一个新列(名为“capital_gains_yield”)来计算一个值,该值是通过使用下一行与以下公式得出的:
capital_gains_yield =(当年收盘价-上年收盘价)/上年收盘价
意思是,结果看起来像这样:
symbol date close capital_gains_yield
44 MMM 2014-12-31 139.6180 ...
45 MMM 2015-12-31 131.3644 -0.057
46 MMM 2016-12-30 159.8925 0.2137
47 MMM 2017-12-29 215.7010 0.3522
48 MMM 2018-12-31 179.2494 -0.16
49 MMM 2019-12-31 171.5581 -0.04
我怎样才能做到这一点?
解决方案
检查pandas.DataFrame.pct_change()函数。
假设您已经按时间对数据框进行了排序:
df = pd.DataFrame({'close':np.random.uniform(0, 10, 5)})
df['yield'] = df['close'].pct_change()
close yield
0 9.836278 NaN
1 5.059823 -0.485596
2 0.842129 -0.833566
3 5.670353 5.733358
4 5.906502 0.041646
推荐阅读
- javascript - Fetch API:如何判断一个错误是否是网络错误
- javascript - 如何在反应中默认打开所有可折叠项目?
- python - 如何将许多大小未知的列表放入字典中
- javascript - React JS 组件未在移动设备中完全呈现
- xml - XSD 歧义,同一复杂类型中的多个合成器
- python - 有没有办法将 networkx 图形细节作为 PIL 图像获取?
- python - 在新数据集上应用 CNN .h5 格式模型
- sql - SQL 来合并我的行?尝试使用 MAX,没有按预期工作。需要抓取最新的行,以及忽略 NULL
- vba - 没有类名的 VBA API Findwindowex 失败
- ruby-on-rails - 有没有更好的方法在 Rails 中实现我的业务逻辑?