将每一行除以前一行

And*_*w.S 2 python dataframe pandas

我有一个股票定价数据框。

日期 中钢 国际贸易中心 微软金融服务公司 世界职业棒球大联盟
2003-01-03 10 9 8 6
2003-01-04 9 9 6 4
2003-01-05 8 9 5 3

我如何创建一个新的数据框,它采用一只股票的今天价格,并将其除以昨天的价格以返回一个比率。示例输出

日期 中钢 国际贸易中心 微软金融服务公司 世界职业棒球大联盟
2003-01-03 NaN NaN NaN NaN
2003-01-04 0.9 1.0 0.75 0.666
2003-01-05 0.88889 1.0 0.83333 0.75

Rav*_*h13 5

使用您显示的样本,请尝试以下操作。简单的解释是,创建 2 个变量 m1 和 m2。其中 m1 包含从 CSCO 列到其余列的所有内容,并使用 1 移动行。在 m2 中包含从 CSCO 列到最后一列值的所有内容,最后将它们分开以获得值。

m1 = df.loc[:,'CSCO':].shift()
m2 = df.loc[:,'CSCO':]
df.loc[:,'CSCO':] = m2/m1
Run Code Online (Sandbox Code Playgroud)

DataFrame 的输出如下:

         Date      CSCO  INTC      MSFT       WBA
0  2003-01-03       NaN   NaN       NaN       NaN
1  2003-01-04  0.900000   1.0  0.750000  0.666667
2  2003-01-05  0.888889   1.0  0.833333  0.750000
Run Code Online (Sandbox Code Playgroud)