Pandas Durchschnitt der Differenz zwischen zwei aufeinanderfolgenden Zeilen in Dataframe

Ich habe ein Dataframe

name date quantity 'A' 2016-12-02 20 'A' 2016-12-04 5 'A' 2016-11-30 10 'B' 2016-11-30 10 ... 

Was ich tun möchte, ist zu berechnen, für jedes Paar aufeinanderfolgende Daten (aufeinanderfolgend wie in chronologisch) für einen Namen, den Unterschied in der Menge, und der Durchschnitt diese zählt für einen Namen.

Termine sind in der Tat nicht unbedingt in einer chronologischen Reihenfolge dargestellt.

Speziell für den Namen A möchte ich +10 (Differenz 2. Dez – 30 Nov) und -15 (Differenz 4. Dez.-2. Nov) berechnen und dann durchschnittlich diese, um ein endgültiges Ergebnis von -2.5 für diesen Namen zu erhalten.

Ideen?

One Solution collect form web for “Pandas Durchschnitt der Differenz zwischen zwei aufeinanderfolgenden Zeilen in Dataframe”

Sie können groupby und diff mit mean apply :

 print (df.groupby('name')['quantity'].apply(lambda x: x.diff().mean()).reset_index()) name quantity 0 'A' -2.5 1 'B' NaN 

EDIT: Sie können sort_values nach sort_values hinzufügen

 print (df.sort_values('date') .groupby('name')['quantity'] .apply(lambda x: x.diff().mean()) .reset_index()) name quantity 0 'A' -2.5 1 'B' NaN 
  • Wie man chinesische Schriftzeichen in einem Pandas-Dataframe anzeigt?
  • Pandas-Datenrahmen in Serie umwandeln
  • Abrufen von DataFrame von allen, aber einer angegebenen Spalte
  • Lag-Werte und Unterschiede in pandas dataframe mit fehlenden vierteljährlichen Daten
  • Python - Effiziente Möglichkeit, dem Dataframe Zeilen hinzuzufügen
  • Logikoperator für Boolesche Indizierung in Pandas
  • Pandas- Split Text in Spalte und Suche in Zeilen
  • Zufällige Concat-Datenrahmen nach Zeile
  • Dot-Boxplots von DataFrames
  • Transponieren einer Spalte in Python-Pandas mit dem einfachsten Index möglich
  • Pandas: Auswählen mehrerer Spalten aus einer Zeile
  • Python ist die beste Programmiersprache der Welt.