Próbuję obliczyć różnicę czasu między dwoma rzędami przy użyciu shift(), ale otrzymuję nieoczekiwany błąd. Mogę brakować czegoś oczywistego

df['Delta'] = (df.index - df.index.shift(1))

To oświadczenie wytwarza ValueError: Cannot shift with no offset. czego mi brakuje?

6
Paal 15 sierpień 2014, 18:20

2 odpowiedzi

Najlepsza odpowiedź

Dwie rzeczy:

Jeśli po prostu chcesz różnicę między dwiema kolejnymi wartościami w indeksie, możesz użyć metody diff (serii, trochę łatwiejsze niż zmiana i odmiana):

df['index_col'] = df.index
df['Delta'] = df['index_col'].diff()
5
joris 15 sierpień 2014, 14:36

Być może myląco, Series.Shift i Indeks.Shift nie rób tego samego , Ten ostatni jest on tylko znacząco zdefiniowany dla czasu. Prawdopodobnie najłatwiej dodać swój indeks jako kolumnę.

df['index_col'] = df.index
df['Delta']=(df['index_col'] - df['index_col'].shift(1))
4
chrisb 15 sierpień 2014, 14:34