Pandas - 单个列内的划分问题

Pandas - Division within a single column issue

我有一列按日期时间索引的 float64 数据。我需要将一行除以它的前一行。

在下面的实例中,我需要从 1.1133/1.1134 开始数据帧,然后获取结果并将其存储在新列中。然后向下移动一行并重复。

在 excel 中,您可以非常简单地说 B2/B3 并将其向下拖动。我可以在 Pandas Dataframe 中使用一种方法来模仿这个吗?我已经用 divide 函数尝试了各种配置,但没有很好的结果。在这方面的任何帮助都会很好地指出我正确的方向。

Time             Close

4/26/2019 11:08 1.1133 

4/26/2019 11:07 1.1134

4/26/2019 11:06 1.1135

4/26/2019 11:05 1.1135

4/26/2019 11:04 1.1135

4/26/2019 11:03 1.1135

您可以分三步完成此操作:

  1. 重复的数据帧
  2. 移动重复的数据框(将索引移动一行)
  3. 根据减法创建新列

df["new_columns"] = (df["Close"] / df["Close"].shift(1))

我不确定你是在看 shift(1) 还是 shift(-1) shift 将所有索引移动给定值。

我想你需要这个

df = pd.DataFrame([['a',1,41],['a',2,98],['a',3,53],['b',1,15],['b',2,64],['b',3,36]], columns=['date', 'xart','yart']) 

  date xart yart
0   a   1   41
1   a   2   98
2   a   3   53
3   b   1   15
4   b   2   64
5   b   3   36

df['change'] = df['xart'].pct_change(1)
df

  date xart yart change
0   a   1   41  NaN
1   a   2   98  1.000000
2   a   3   53  0.500000
3   b   1   15  -0.666667
4   b   2   64  1.000000
5   b   3   36  0.500000