2016-04-03 12 views
1

Ich möchte Mathe auf einer Reihe Vektor tun. Ich möchte den Unterschied zwischen zwei Zeilen in einem Vektor nehmen. Meine erste Intuition war:Übernehmen Sie mit mehreren Zeilen in Vektor

def row_diff(prev, next): 
    return(next - prev) 

und dessen Verwendung dann

my_col_vec.apply(row_diff) 

aber dies nicht tut, was Ich mag würde. Es scheint, dass apply zeilenweise angewendet wird, was in Ordnung ist, aber ich kann anscheinend keine äquivalente Operation finden, die es mir erlaubt, einfach einen neuen Vektor aus dem alten zu erstellen, indem ich die vorherige Zeile von der nächsten subtrahiere.

Gibt es einen besseren Weg, dies zu tun? Ich habe this Dokument gelesen und es sieht nicht so aus.

Danke!

+0

Blick zur Verfügung. –

+0

Verwenden Sie ['diff'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.diff.html) – EdChum

+0

@EdChum Bitte posten Sie dies als eine Antwort, so kann ich Ihnen Kredit geben. – Steve

Antwort

1

Um zwischen den Reihen Unterschiede diff verwenden zu berechnen:

In [6]: 
df = pd.DataFrame({'a':np.random.rand(5)}) 
df 

Out[6]: 
      a 
0 0.525220 
1 0.031826 
2 0.260853 
3 0.273792 
4 0.281368 

In [7]: 
df['diff'] = df['a'].diff() 
df 

Out[7]: 
      a  diff 
0 0.525220  NaN 
1 0.031826 -0.493394 
2 0.260853 0.229027 
3 0.273792 0.012940 

auch mit apply zu vermeiden versuchen

bitte, da es in der Regel ein vektorisiert Methode

bei `df.shift`
Verwandte Themen