Dodawanie kolumny obliczeniowej do ramki danych w pandach
Mam zestaw danych cenowych OHLC, który przeanalizowałem z CSV do ramki danych Pandas i ponownie próbowałem do 15-minutowych słupków:
<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)
Chciałbym dodać różne kolumny obliczeniowe, zaczynając od prostych, takich jak przedział czasu (H-L), a następnie booleanów, aby wskazać występowanie wzorców cenowych, które określę - np. wzór świecy młotkowej, dla którego przykładowa definicja:
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"])
Podstawowy problem: jak odwzorować funkcję na kolumnę, szczególnie tam, gdzie chciałbym odwołać się do więcej niż jednej innej kolumny lub całego wiersza lub czegoś innego?
Ten post zajmuje się dodawaniem dwóch obliczonych kolumn z jednej kolumny źródłowej, która jest bliska, ale nie całkiem.
I nieco bardziej zaawansowany: w przypadku wzorców cenowych, które są określane w odniesieniu do więcej niż pojedynczego pręta (T), w jaki sposób mogę odwoływać się do różnych wierszy (np. T-1, T-2 itd.) W ramach definicji funkcji?