2017-09-05 31 views
0

我有一個數據幀。我想添加一列來計算兩個相鄰行之間的差值(如果序列不同,則無關緊要)。確定連續行之間唯一值的數量

例如,如果行[A]是12,22,5,7;在B行是22,7,3,6那麼這個數是2等等。因爲在行[a]和行[b]中我們有相同的22和7(儘管序列不同)。在第b行,我們有兩個新的數字3,6。因此,我們最後在行「b」中添加一個數字,它記錄了行a和行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')) 

謝謝。

+2

什麼是您預期的輸出?你的問題並不清楚。 – Zero

+0

你可以請關閉你的[上一個問題](https://stackoverflow.com/questions/46047432/how-to-get-3-smallest-value-in-one-row-and-return-the-correspondent-columns -nam)?如果其中一個答案有幫助,請將其標記爲已接受。 –

+0

你的例子不清楚,預期的數字是多少? – Vinny

回答

1

約翰高爾特在他的(現在,不幸被刪除)答案在set操作正確的軌道上。

此外,佔重複將包括:

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 
相關問題