2017-09-05 5 views
0

Ich habe einen Datenrahmen. Ich möchte eine Spalte hinzufügen, die den Differenzwert zwischen zwei benachbarten Zeilen berechnet (wenn die Sequenz anders ist, spielt es keine Rolle).Ermitteln Sie die Anzahl der eindeutigen Werte zwischen aufeinanderfolgenden Zeilen

Zum Beispiel, wenn in Zeile [A] ist 12,22,5,7; in Reihe B ist 22,7,3,6, dann ist die Zahl 2 usw. Weil in Reihe [a] und Reihe [b] wir die gleichen 22 und 7 haben (obwohl die Reihenfolge unterschiedlich ist). in Zeile b haben wir zwei neue Nummer 3,6. Also fügen wir endlich eine Zahl in Zeile "b" hinzu, die den Unterschied zwischen Zeile a und Zeile b aufzeichnet.

df = pd.DataFrame({'X': [22, 7, 43, 44, 56,67,7,38,29,130],'Y': [5,3,330,140,250,10,207,320,420,50],'Z': [7,6,136,144,312,10,82,63,42,12],'T':[12, 22, 4, 424, 256,167,27,38,229,30]},index=list('ABCDEFGHIJ')) 

Danke.

+2

Was ist Ihre erwartete Ausgabe? Es ist nicht klar aus deiner Frage. – Zero

+0

Können Sie bitte schließen Sie Ihre [vorherige Frage] (https://stackoverflow.com/questions/46047432/how-to-get-3-smallest-value-in-one-row-and-return-the-correspondent-columns -nam)? Wenn eine der Antworten hilfreich ist, markieren Sie diese bitte als akzeptiert. –

+0

Ihr Beispiel ist unklar, wie kommt die erwartete Zahl ist 2? – Vinny

Antwort

1

John Galt in seiner (jetzt leider gelöschten) Antwort war auf dem richtigen Weg mit set Operationen.

Darüber hinaus entfallen Duplikate beinhalten:

s = df.apply(set, 1) 
df['diffs'] = s.diff().fillna('').str.len() + (4 - s.str.len()) 
df 

    T X Y Z diffs 
A 12 22 5 7  0 
B 22 7 3 6  2 
C 4 43 330 136  4 
D 424 44 140 144  4 
E 256 56 250 312  4 
F 167 67 10 10  4 
G 27 7 207 82  4 
H 38 38 320 63  4 
I 229 29 420 42  4 
J 30 130 50 12  4 
Verwandte Themen