Как сохранить строки при изменении значения в столбце python - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть DataFrame с двумя столбцами ID и Value1, я хочу выбирать строки, когда изменяется значение столбца value1 столбца. Я хочу сохранить строки 3 до изменения и 3 после изменения, а также строку изменения.

df=pd.DataFrame({'ID':[1,3,4,6,7,8,90,23,56,78,90,34,56,78,89,34,56],'Value1':[0,0,0,0,0,2,2,2,2,0,0,0,1,1,1,1,1]})

 ID  Value1
0    1       0
1    3       0
2    4       0
3    6       0
4    7       0
5    8       2
6   90       2
7   23       2
8   56       2
9   78       0
10  90       0
11  34       0
12  56       1
13  78       1
14  89       1
15  34       1
16  56       1


output:

    ID  Value1
0    4       0
1    6       0
2    7       0
3    8       2
4   90       2
5   23       2
6   90       2
7   23       2
8   56       2
9   78       0
10  90       0
11  34       0

1 Ответ

1 голос
/ 11 ноября 2019

IIUC,

import numpy as np

df=pd.DataFrame({'ID':[1,3,4,6,7,8,90,23,56,78,90,34,56,78,89,34,56],'Value1':[0,0,0,0,0,2,2,2,2,0,0,0,1,1,1,1,1]})
df.reset_index(drop=True) #index needs to start from zero for solution
ind = list(set([val for i in df[df['Value1'].diff()!=0].index for val in range(i-3, i+4) if i>0 and val>=0])) 
# diff gives column wise differencing. combined it with nested list and 
# finally, list(set()) to drop any duplicates in index values

df[df.index.isin(ind)]
   ID   Value1
2   4   0
3   6   0
4   7   0
5   8   2
6   90  2
7   23  2
8   56  2
9   78  0
10  90  0
11  34  0
12  56  1
13  78  1
14  89  1
15  34  1

Если вы хотите сохранить вхождения дубликатов, опустите функцию списка (set ()) над списком

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...