Удалить строки из pandas DataFrame на основе условного выражения, итерации (n) и (n + 1) - PullRequest
0 голосов
/ 26 мая 2020

Учитывая следующий фрейм данных:

 col1 
1  0.6   
2  0.88  
3  1.2  
4  1.2  
5  1.2  
6  0.55  
7  0.55
8  0.65

Я хочу удалить из него строки, где значение в строке (n + 1) равно такое же значение in (n), так что это даст:

col1 
1  0.6   
2  0.88  
3  1.2  
4  row deleted  
5  row deleted  
6  0.55  
7  row deleted
8  0.65

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Попробуйте следующее:

df = df[~df['col1'].eq(df['col1'].shift(1))]
print(df)

   col1
0  0.60
1  0.88
2  1.20
5  0.55
7  0.65

Или:

df = df[df['col1'].ne(df['col1'].shift(1))]
print(df)

   col1
0  0.60
1  0.88
2  1.20
5  0.55
7  0.65
1 голос
/ 26 мая 2020

Хорошо, давай сделаем

df=df[df.diff().ne(0)]
1 голос
/ 26 мая 2020
In [191]: df[df["col1"] != df["col1"].shift()]
Out[191]:
   col1
1  0.60
2  0.88
3  1.20
6  0.55
8  0.65
...