У меня есть два столбца во фрейме данных, содержащем более 1000 строк.Столбец A может принимать значения X, Y, None.Столбец B содержит случайные числа от 50 до 100.
Каждый раз, когда в столбце A встречается не «None», это считается вхождением4.таким образом, предыдущее не None вхождение в столбце A будет вхождением3, а предыдущее будет вхождением2, а предыдущее - вхождением1.Я хочу найти минимальное значение столбца B между вхождением 4 и вхождением 3 и проверить, не превышает ли оно минимальное значение столбца В между вхождением 2 и вхождением 1.Результаты могут быть сохранены в новом столбце во фрейме данных как «ДА» или «НЕТ».
Пример ввода ![enter image description here](https://i.stack.imgur.com/69VUk.png)
Например, мне нужнонайти минимальное значение столбца B между ROWNUM 14 и ROWNUM 11 и сравнить его с минимальным значением столбца B между ROWNUM 6 и ROWNUM 3. Далее мне нужно сравнить минимальное значение между ROWNUM 22 и ROWNUM 14 и сравнить его сминимальное значение между ROWNUM 11 и ROWNNUM 6.
ОБНОВЛЕНИЕ:
import numpy as np
import pandas as pd
df = pd.DataFrame([[0, 0]]*100, columns=list('AB'), index=range(1, 101))
df.loc[[3, 6, 11, 14, 22, 26, 38, 51, 64, 69, 78, 90, 98], 'A'] = 1
df['B'] = np.random.randint(50, 100, size=len(df))
df['result'] = df.loc[df['A'] != 0, 'B'].rolling(4).apply(
lambda x: x[-2:].min() > x[:2].min(), raw=True)
print(df)
df.to_excel("rollingwindow.xlsx",sheet_name="example")
a_guest, я использовал ваш код, и вывод выглядит следующим образом.
![enter image description here](https://i.stack.imgur.com/v9j7w.png)
Минимальное значение между строкой 22 и строкой 14 равно 56, что больше минимального значения между строками 11 и 6, равного 54. Таким образом, результатом должно быть 1, но ваш код генерирует 0.