mam zestaw danych dotyczących cen OHLC, że są analizowane z CSV w dataframe PANDAS i próbkowane 15 min barów:dodania obliczonej kolumnę (-y) do dataframe w pand
<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)
POLUBIŁEM dodawać różne kolumny obliczeniowe, zaczynając od prostych, takich jak przedział okresu (HL), a następnie wartości logiczne, aby wskazać występowanie wzorów cen, które zdefiniuję - np. młotek świeca wzór, dla którego definicja próbki:
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: w jaki sposób mapować funkcję do kolumny, a konkretnie gdzie chciałbym odwołać więcej niż jedną inną kolumnę lub cały wiersz lub cokolwiek?
This post dotyczy dodania dwóch wyliczonych kolumn z pojedynczej kolumny źródłowej, która jest bliska, ale nie do końca.
I nieco bardziej zaawansowany: w przypadku wzorów cen, które są określone w odniesieniu do więcej niż jednego paska (T), jak mogę odwoływać się do różnych wierszy (np. T-1, T-2 itp.) Z definicji funkcji ?
Wielkie dzięki z góry.
Również przydatne, wielkie dzięki. Wiele sposobów na skórze kota i wszystkich. Dałbym ci uprowadzenie, ale jest to moje pierwsze pytanie dotyczące StackOverflow i niestety nie mam wystarczającej liczby przedstawicieli. Nie sądzę, że masz nny pomysł na drugą część, mianowicie odsyłając do sąsiednich wierszy w ramce danych z funkcji map/apply? Znów na zdrowie. – ultra909
Świetny przykład. Bardzo czytelny kod. –
Z jakiegoś powodu metoda używająca 'map (f, col1, col2)' jest znacznie szybsza niż 'df.apply (..., axis = 1)'. mapowanie zajmuje 0,35s vs df.apply, co daje 26s dla ramki danych rzędu 1M. Każdy pomysł, dlaczego? (python 2.7 i pandy 0.18.1) – MohamedEzz