假设我们有以下框架:

              timestamp      open      high       low     close  delta  atr  last_index  bearish bullish_turning_point
2   04-10-2024 01:54:44  18370.00  18377.75  18367.50  18376.00     32    0        1949    False                  True
5   04-10-2024 03:21:14  18376.50  18383.00  18375.25  18381.25     28    0        3899    False                  True
7   04-10-2024 04:38:54  18378.50  18386.25  18378.25  18385.50    133    0        5199    False                  True
9   04-10-2024 05:30:27  18384.00  18389.50  18378.75  18388.25    135    0        6499    False                  True
12  04-10-2024 06:06:12  18371.00  18378.00  18369.50  18378.00    130    0        8449    False                  True
14  04-10-2024 06:33:44  18372.25  18383.75  18372.00  18376.25     67    0        9749    False                  True
18  04-10-2024 07:21:14  18377.50  18387.75  18376.25  18380.00      8    0       12349    False                  True
22  04-10-2024 07:47:58  18388.00  18396.75  18385.25  18389.50    -30    0       14949    False                  True
25  04-10-2024 08:06:17  18390.75  18397.00  18387.50  18392.00    -25    0       16899    False                  True
28  04-10-2024 08:33:32  18384.75  18398.00  18383.25  18394.00     89    0       18849    False                  True
30  04-10-2024 08:54:35  18391.25  18403.00  18387.75  18399.25     84    0       20149    False                  True
34  04-10-2024 09:11:15  18388.75  18396.25  18385.75  18392.25     15    0       22749    False                  True
43  04-10-2024 10:02:22  18343.50  18350.50  18341.25  18350.50    113    0       28599    False                  True
46  04-10-2024 10:14:44  18352.00  18361.75  18352.00  18360.00    -42    0       30549    False                  True
49  04-10-2024 10:35:49  18354.00  18361.25  18347.75  18358.00     49    0       32499    False                  True
52  04-10-2024 10:54:18  18362.25  18372.00  18361.50  18372.00    180    0       34449    False                  True
56  04-10-2024 11:12:32  18369.25  18379.50  18367.00  18376.50     78    0       37049    False                  True
59  04-10-2024 11:27:27  18370.00  18376.50  18367.50  18373.25     54    0       38999    False                  True
65  04-10-2024 12:01:53  18377.75  18388.25  18377.50  18383.25    108    0       42899    False                  True
73  04-10-2024 12:25:04  18382.00  18386.25  18381.00  18384.75     65    0       48099    False                  True

如何找到之前每一行最接近"开放"的"最近"?例如

对于第30行(close:18399.25),这将是第25行(open:18390.75).对于第52行(close:18372.00),这将是14(open:18372.25),等等.

推荐答案

如果您想将当前行的打开包含在最接近的打开值中,您可以这样做:

df['nearest'] = [(abs(df.loc[:i, 'open'] - close)).idxmin() for i, close in df['close'].items()]

输出:

[2, 5, 7, 9, 7, 5, 7, 22, 25, 25, 30, 30, 43, 46, 49, 14, 5, 14, 9, 28]

如果您不想包括当前行的打开状态,情况就会变得更复杂:

df['nearest'] = [0] + [(abs(df.loc[:df.index[i-1], 'open'] - close)).idxmin() for i, close in enumerate(df['close'][1:], 1)]

输出:

[0, 2, 5, 7, 7, 5, 7, 9, 22, 25, 25, 30, 2, 2, 46, 14, 5, 14, 9, 28]

您可以根据需要用np.nan(或其他任何值)替换第一行的值.

Python相关问答推荐

如何使用stride_tricks.as_strided逆转NumPy数组

具有症状的分段函数:如何仅针对某些输入值定义函数?

如何在msgraph.GraphServiceClient上进行身份验证?

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

即使在可见的情况下也不相互作用

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

大小为M的第N位_计数(或人口计数)的公式

如何在Raspberry Pi上检测USB并使用Python访问它?

如果值发生变化,则列上的极性累积和

迭代嵌套字典的值

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

为什么numpy. vectorize调用vectorized函数的次数比vector中的元素要多?

OpenCV轮廓.很难找到给定图像的所需轮廓

人口全部乱序 - Python—Matplotlib—映射

处理Gekko的非最优解

如何重新组织我的Pandas DataFrame,使列名成为列值?

如何用FFT确定频变幅值

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

类型对象';敌人';没有属性';损害';

如何从一个维基页面中抓取和存储多个表格?