2017-09-05 2 views
0

J'ai une seule image. Je veux ajouter une colonne qui calcule la valeur de différence entre deux rangées adjacentes (si la séquence est différente, cela n'a pas d'importance).Déterminer le nombre de valeurs uniques entre des rangées consécutives

Par exemple, si dans la rangée [A] est 12,22,5,7; dans la rangée B est 22,7,3,6 alors le nombre est 2, etc. Parce que dans la rangée [a] et la rangée [b] nous avons les mêmes 22 et 7 (bien que la séquence soit différente). dans la rangée b, nous avons deux nouveaux numéros 3,6. Nous ajoutons donc un chiffre dans la rangée "b" qui enregistre la différence entre la ligne a et la ligne b.

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')) 

Merci.

+2

Quelle est votre résultat attendu? Ce n'est pas clair à cause de votre question. – Zero

+0

Pouvez-vous s'il vous plaît fermer votre [question précédente] (https://stackoverflow.com/questions/46047432/how-to-get-3-smallest-value-in-one-row-and-return-the-correspondent-columns -nam)? Si l'une des réponses vous a aidé, veuillez la marquer comme acceptée. –

+0

Votre exemple n'est pas clair, comment se fait-il que le nombre attendu est 2? – Vinny

Répondre

1

John Galt dans sa réponse (maintenant, malheureusement supprimé) était sur la bonne voie avec set opérations.

En outre, ce qui représente des doublons Impliquera:

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