【发布时间】:2019-12-02 14:58:07
【问题描述】:
以下是数据示例:
目标:
当running_bid_max 大于或等于 到ask_price_target_good 中的值时,创建一个新的时间戳列。然后为running_bid_min 小于或等于 ask_price_target_bad 时创建一个单独的时间戳列。
注意:这将在大量数据上执行,需要尽快计算。我希望我不必通过iterrows() 遍历所有行
running_bid_min 和 running_bid_max 是使用未来某个时间范围内的 running.min() 和 pd.running.max() 计算的(此示例使用 5 分钟时间线。因此它将是运行的最小、最大 5 分钟从当前时间开始)
复制下面的数据,然后使用df = pd.read_clipboard(sep=',')
time,bid_price,ask_price,running_bid_max,running_bid_min,ask_price_target_good,ask_price_target_bad
2019-07-24 07:59:44.432034,291.06,291.26,291.4,291.09,291.46,291.06
2019-07-24 07:59:46.393418,291.1,291.33,291.4,291.09,291.53,291.13
2019-07-24 07:59:48.425615,291.1,291.33,291.4,291.09,291.53,291.13
2019-07-24 07:59:50.084206,291.12,291.33,291.4,291.09,291.53,291.13
2019-07-24 07:59:52.326455,291.12,291.33,291.4,291.09,291.53,291.13
2019-07-24 07:59:54.428181,291.12,291.33,291.4,291.09,291.53,291.13
2019-07-24 07:59:58.550378,291.14,291.35,291.4,291.2,291.55,291.15
2019-07-24 08:00:00.837238,291.2,291.35,291.4,291.2,291.55,291.15
2019-07-24 08:00:57.338769,291.4,291.46,291.51,291.4,291.66,291.26
2019-07-24 08:00:59.058198,291.4,291.46,291.96,291.4,291.66,291.26
2019-07-24 08:01:00.802679,291.4,291.46,291.96,291.4,291.66,291.26
2019-07-24 08:01:02.781289,291.4,291.46,291.96,291.45,291.66,291.26
2019-07-24 08:01:04.645144,291.45,291.46,291.96,291.45,291.66,291.26
2019-07-24 08:01:06.491997,291.45,291.46,292.07,291.45,291.66,291.26
2019-07-24 08:01:08.586688,291.45,291.46,292.1,291.45,291.66,291.26
【问题讨论】:
-
包含样本数据的图像不是一个好主意。您应该将数据头打印到终端并复制/粘贴它。这样人们就可以在数据上尝试他们的代码并更好地帮助您。
-
@QuangHoang 我用打印的数据进行了更新,它的格式是我能得到的最好的。我不能让任何其他行在不移位的情况下移位。如果您愿意,请随时尝试修复它。应该很容易将最后 2 列中的值移到 stackoverflow 之外。
-
现在好多了。我可以用一个命令复制和重现数据帧。
-
如果先发生相反的情况怎么办?您想要那个时间戳还是什么都不想要?
-
您能否阐明您想要的数据输出?您的第一个条件出现在索引 9 处,而您的第二个条件出现在索引 1 处,因此第一个 不会 出现在第二个之前。
标签: python python-3.x pandas performance time