【发布时间】:2018-10-14 04:39:55
【问题描述】:
我有一个数据框,其中包含开盘/收盘、蜡烛颜色和连续蜡烛的数量。
date open close color run
00:01:00 100 102 g 1
00:02:00 102 104 g 2
00:03:00 104 106 g 3
00:04:00 106 105 r 1
00:05:00 105 101 r 2
00:06:00 101 102 g 1
00:06:00 102 103 g 2
我正在尝试计算运行中第一根蜡烛的开盘价和运行中最后一根蜡烛的收盘价之间的差值的绝对值,并将差值应用于每条线。结果看起来像
date open close color run run_length
00:01:00 100 102 g 1 2 # abs(100 - 102)
00:02:00 102 104 g 2 4 # abs(100 - 104)
00:03:00 104 106 g 3 6 # abs(100 - 106)
00:04:00 106 105 r 1 1 # abs(106 - 105)
00:05:00 105 101 r 2 5 # abs(106 - 101)
00:06:00 101 102 g 1 1 # abs(101 - 102)
00:06:00 102 103 g 2 2 # abs(101 - 103)
我已经阅读了另外两篇接近但没有完全找到我正在寻找的解决方案的帖子:
get first and last values in a groupby
Pandas number of consecutive occurrences in previous rows
我使用df.groupby((df['color'] != df['color'].shift()).cumsum()) 按蜡烛的颜色对行进行分组(这是我计算颜色和运行次数的方法),我可以使用.agg(['first', 'last']).stack() 获得组的第一个和最后一个值,但是这不允许我应用原始数据帧的每行差异。
【问题讨论】: