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
您可以分三步完成此操作:
- 重复的数据帧
- 移动重复的数据框(将索引移动一行)
- 根据减法创建新列
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
我有一列按日期时间索引的 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
您可以分三步完成此操作:
- 重复的数据帧
- 移动重复的数据框(将索引移动一行)
- 根据减法创建新列
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