Как сравнить одно значение с предыдущим и следующим значениями X в кадре данных в python - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу выяснить, все ли предыдущие значения X и следующие значения X в строке все ниже n-го значения. И если да, я хочу изменить столбец 'isPeak' с 0 на 1. У меня есть трудности с поиском того, как сравнить предыдущие и последующие значения с текущим, и я написал некоторый псевдокод в свой for-l oop :

X = 10
for i in range(len(df)):
    P = df.get_value(i, 'Price')
    if P >= *price(i-X:i+X)*:
        df.at[i, 'isPeak'] = 1

Мне нужно заменить цену (iX: i + X) таким образом, чтобы она сравнивала все X предыдущих и X следующих цен с текущей. Я нашел решение, которое включает использование shift (), которое добавляет X предыдущую и X следующую цену в качестве дополнительных столбцов. Это облегчает их сравнение, поскольку мне просто нужно выяснить, является ли это наибольшее значение в этом ряду. Тем не менее, я хотел бы получить более эффективную или «более чистую» версию, если это возможно, и у кого-то есть идея.

Большое спасибо заранее!

1 Ответ

0 голосов
/ 24 февраля 2020

Я думаю, тебе нужно что-то вроде этого:

import numpy as np
import pandas as pd
df = pd.DataFrame({'price': np.arange(3,70,2)})
x=10
for i in range(x, df.shape[0] - x):
    P = df['price'].iloc[i]
    df_tmp = df.loc[i-x:i+x]
    if df_tmp['price'].loc[df_tmp['price']<=P].shape[0]>0:
        print('do something ...')
...