Я хочу создать новый столбец внутри фрейма данных, значения которого основаны на сравнении логических критериев элементов строки (по строкам) и элементов столбца (т. Е. С помощью shift ()) в одном и том же логическом выражении. Я надеюсь, что гибкое решение поможет другим.
Например:
- Найти строки в кадре данных, где только один столбец имеет
максимально возможное значение (например, 8 для примера ниже) среди
столбцы.
- Для каждой строки, соответствующей вышеуказанным критериям, укажите столбец
имеет максимальное значение 8.
- Теперь посмотрите на запаздывающее значение этого максимального значения, если запаздывание
меньше 8 (то есть 7), присвойте значение 1 в новом столбце, называемом успехом,
в противном случае присвойте 0.
Пример прост: он содержит только размер окна два (текущий и с задержкой 1). Я надеюсь на обобщенную логику, которая может охватывать более 3 столбцов и более 1 строки с лагами. Мой фрейм данных называется bob, а индекс находится в обратном порядке, так как у моего фрейма данных, как правило, сначала самые последние даты. кстати, у меня есть части этого решения, так как у меня была некоторая предыдущая поддержка части этой проблемы в предыдущем посте.
import numpy as np
import pandas as pd
Bob = pd.DataFrame({'C1':[3,2,4,6,6,7,8],'C2':[5,4,6,4,7,3,2],'C3': [5,4,6,7,8,6,4],'Success':[0,0,0,0,1,0,1]})
Bob1 = Bob[::-1]
Bob1