将每一行除以前一行
我有一个股票定价数据框。
| 日期 | 中钢 | 国际贸易中心 | 微软金融服务公司 | 世界职业棒球大联盟 |
|---|---|---|---|---|
| 2003-01-03 | 10 | 9 | 8 | 6 |
| 2003-01-04 | 9 | 9 | 6 | 4 |
| 2003-01-05 | 8 | 9 | 5 | 3 |
回答
使用您显示的样本,请尝试以下操作。简单的解释是,创建 2 个变量 m1 和 m2。其中 m1 包含从 CSCO 列到其余列的所有内容,并使用 1 移动行。在 m2 中包含从 CSCO 列到最后一列值的所有内容,最后将它们分开以获得值。
m1 = df.loc[:,'CSCO':].shift()
m2 = df.loc[:,'CSCO':]
df.loc[:,'CSCO':] = m2/m1
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