2014-10-14 2 views
0

У меня есть DataFrame с тремя столбцами, и я хотел бы рассчитать, сколько из трех значений также содержалось в предыдущей строке. Значения представляют собой строки.Pandas проверяет эквивалентность строк

Оригинал DF:

Date num1 num2 num3 
Y1  x  y  z 
Y2  b  x  a 
Y3  x  c  c 
Y4  c  x  d 
Y5  x  c  d 

Необходим выход:

Date num1  
Y1  -  
Y2  1  <- since only x in previous row 
Y3  1  <- since only x in previous 
Y4  2  <- since both x and c in previous 
Y5  3  <- since all three in previous row 

Любые мысли?

+0

Что вы пробовали? – COSTA

ответ

2

Обычно при сравнении строк вы хотите использовать метод сдвига

[90]: 

rel = df.set_index('Date') 
shifted = rel.shift() 

rel.apply(lambda x:x.isin(shifted.loc[x.name]).sum(),axis=1) 
Out[90]: 
Date 
Y1  0 
Y2  1 
Y3  1 
Y4  2 
Y5  3 
dtype: int64 
+0

Прекрасно работает, THX! – AtotheSiv

Смежные вопросы