Moje pandas dataframe wygląda tak:

            VTI       VOO       VGK      IEV
2017-06-20  125.5809  224.3456  55.2675  44.43
2017-06-21  125.1100  223.5591  54.8000  44.05
2017-06-22  124.7800  223.1609  54.8200  44.06
2017-06-23  124.8100  223.1200  54.8400  44.10

Biegnę

m_price = price.resample('BM', how=lambda x: x[-1])

Który działa, ale mówi mi: "Futurewarning: Jak w .Resample () jest przestarzałe nową składnię jest .Resample (...) .. Zastosuj ()"

Czy ktoś może pomógł mi w nowej składni? Dzięki (PY 3.6.1 / Pandas 0.20.2)

2
steff 25 czerwiec 2017, 16:43

3 odpowiedzi

Najlepsza odpowiedź

DataFrame.resample() zwraca obiekt {x1}}. Następnie możesz użyć jednej z metod na niej: http: // pandas .pydata.org / Pandas-Docs / Stable / API.HTML # Resampling

W tym przypadku potrzebujesz last():

m_price = price.resample('BM').last()
1
wombatonfire 25 czerwiec 2017, 14:01

Jeśli nie musisz podsumować danych na częstotliwości pobieranej w dół, można użyć pd.DataFrame.asfreq

df.asfreq('BM')
1
piRSquared 25 czerwiec 2017, 14:15

V0.18.0 (13 marca 2016) Dokumentacja mówi,

Breaking API Zmiana do metody .Resample, aby uczynić go bardziej -Resample "rel =" nofollow nefErr "> patrz tutaj .

Możesz użyć Te działa na obiektach Resampler.

I moja odpowiedź brzmi:

m_price = price.resample('BM').last()
print(m_price)

               VTI     VOO    VGK   IEV
2017-06-30  124.81  223.12  54.84  44.1
1
su79eu7k 25 czerwiec 2017, 14:05