Agregar columnas calculadas a un marco de datos en pandas

Tengo un conjunto de datos de precios de OHLC, que he analizado desde CSV a un marco de datos de Pandas y he vuelto a muestrear en barras de 15 minutos:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 500047 entries, 1998-05-04 04:45:00 to 2012-08-07 00:15:00
Freq: 15T
Data columns:
Close    363152  non-null values
High     363152  non-null values
Low      363152  non-null values
Open     363152  non-null values
dtypes: float64(4)

Me gustaría agregar varias columnas calculadas, comenzando con simples como el rango del período (H-L) y luego los valores booleanos para indicar la aparición de patrones de precios que definiré, p. Ej. un patrón de vela de martillo, para el cual una definición de muestra:

def closed_in_top_half_of_range(h,l,c):
    return c > l + (h-1)/2

def lower_wick(o,l,c):
    return min(o,c)-l

def real_body(o,c):
    return abs(c-o)

def lower_wick_at_least_twice_real_body(o,l,c):
    return lower_wick(o,l,c) >= 2 * real_body(o,c)

def is_hammer(row):
    return lower_wick_at_least_twice_real_body(row["Open"],row["Low"],row["Close"]) \
    and closed_in_top_half_of_range(row["High"],row["Low"],row["Close"])

Problema básico: ¿cómo asigno la función a la columna, específicamente donde me gustaría hacer referencia a más de una columna o toda la fila o lo que sea?

Esta publicación se ocupa de agregar dos columnas calculadas a partir de una sola columna de origen, que está cerca, pero no del todo.

Y un poco más avanzado: para los patrones de precios que se determinan con referencia a más de una barra (T), ¿cómo puedo hacer referencia a diferentes filas (por ejemplo, T-1, T-2, etc.) desde dentro de la definición de la función?

Respuestas a la pregunta(4)

Su respuesta a la pregunta