Pytanie:wektoryzowane sposób do kwerendy datę i cenę danych
Przegląd:
ja szukam wektoryzowane sposobem uzyskania pierwszego dnia, pewien warunek jest postrzegana. Warunek znajduje się, gdy cena w dfDays
wynosi >
cenę docelową określoną w dfWeeks.target
. Ten warunek musi zostać osiągnięty po dacie ustawienia celu.
Czy istnieje sposób przeprowadzenia poniższej analizy szeregów czasowych z apply
lub podobnym, w sposób wektorowy w języku Pandy?
danych:
Generowanie freq='D'
Test dataframe
np.random.seed(seed=1)
rng = pd.date_range('1/1/2000', '2000-07-31',freq='D')
weeks = np.random.uniform(low=1.03, high=3, size=(len(rng),))
ts2 = pd.Series(weeks
,index=rng)
dfDays = pd.DataFrame({'price':ts2})
Teraz utworzyć resamplingowi freq='1W-Mon'
dataframe
dfWeeks = dfDays.resample('1W-Mon').first()
dfWeeks['target'] = (dfWeeks['price'] + .5).round(2)
Zastosowanie reindex
wyrównać indeks zarówno d f:
dfWeeks = dfWeeks.reindex(dfDays.index)
Więc dfWeeks
jest dataframe zawierający wartości docelowych użyjemy
dfWeeks.dropna().head()
price target
2000-01-03 1.851533 2.35
2000-01-10 1.625595 2.13
2000-01-17 1.855813 2.36
2000-01-24 2.130619 2.63
2000-01-31 2.756487 3.26
Jeśli skupimy się na pierwszej tarczy z dfWeeks
match = dfDays[dfDays.price >= dfWeeks.target.loc['2000-01-03']]
Pierwszy mecz jest w przeszłość jest niepoprawna, więc wpis 2000-01-12
jest pierwszym prawidłowym dopasowaniem:
match.head()
price
2000-01-02 2.449039
2000-01-12 2.379882
2000-01-14 2.759891
2000-01-16 2.350821
2000-01-21 2.607467
Czy istnieje sposób to zrobić z apply
lub podobny do target
wpisów w dfWeeks
w wektoryzowane sposób?
sygnał wyjściowy:
price target target_hit
2000-01-03 1.851533 2.35 2000-01-12
2000-01-10 1.625595 2.13 2000-01-12
2000-01-17 1.855813 2.36 2000-01-21
2000-01-24 2.130619 2.63 2000-01-25
2000-01-31 2.756487 3.26 nan
Nie rozumiem logiki - Skąd masz '' target' i kolumny target_hit' w żądanych danych ustawić – MaxU
wygląda mi jak [ „XY problem”] (http: // meta. stackexchange.com/a/66378/348814), kiedy koncentrujesz się na tym konkretnym rozwiązaniu, podczas gdy mogą być lepsze. Właśnie dlatego próbuję zrozumieć, co chcesz osiągnąć. – MaxU
@Maxu, zaktualizowałem post z przeglądem tego, co próbuję osiągnąć. – ade1e