2016-04-12 5 views
1

Ich bin auf der Suche nach einer einfachen Methode für die Reihe weise Subtraktion auf einem Pandas df. Der nächste, den ich finden kann, ist df.shift (1), der nur bei datetime funktioniert. Also, wenn ich ein Datenrahmeneingebaute Methode wie pandas(), die Zeile weise Subtraktion macht

df['col'] = [1,2,3,4,5] 

Gibt es ein in Verfahren gebaut, die mich elementweise Subtraktion tun können, so dass sie die folgende zurückgibt, indem sie von jedem Element Subtraktion des einen auf seiner linken Seite. Das erste Element bleibt so wie es ist.

sd['col'] = [1, 1, 1, 1, 1] 

Gibt es eine bereits existierende Methode, die das tut oder muss ich es selbst programmieren?

+0

Leider Ihr Ergebnis nicht der Problembeschreibung überein, bitte erklären, wie Sie von Ihrem Ausgangsspalte auf die gewünschte Ergebnis erhalten – EdChum

+0

ja leider der rechten Seite, es aktualisiert es – Steve

+0

ich noch don‘ t verstehe die Ausgabe durchaus. Sie haben nur 5 Zahlen, mit denen Sie beginnen können: Wie erhalten Sie 5 1s, wenn Sie benachbarte Elemente subtrahieren? Sollte weder der erste noch der letzte Wert null sein? Oder wenn Sie wollen, dass es mit dem nächsten gefüllt wird, welchen möchten Sie füllen? – DSM

Antwort

2

In Ihrem Kommentar schreiben Sie

Erster Wert korrekt ist. Die nachfolgenden Werte sind zu subtrahieren.

Also sagen Sie, dass Sie die Unterschiede in einer Spalte namens diff platzieren möchten. Dann könnten Sie

df['diff'] = df['col'].diff() 

(mit pd.DataFrame.diff) zu tun, was den Unterschied in jedem Eintrag mit Ausnahme der ersten platzieren würde. Sie können dies leicht flicken mit

df['diff'].values[0] = df['col'].values[0] 
Verwandte Themen