首页 > 解决方案 > 进行计算,使用多行,熊猫

问题描述

扩展我之前的问题。只用熊猫返回一年中的最后一天?

我现在的桌子是这个

表的名称是 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

我怎样才能做到这一点?

标签: pythonpandas

解决方案


检查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

推荐阅读