Как извлечь строку путем сопоставления диапазона значений столбца - PullRequest
1 голос
/ 31 октября 2019

У меня есть датафрейм со значением столбцов, идентификатором, расстоянием и расстоянием2. я хочу извлечь предыдущую строку, когда значение расстояния столбца или distance2 изменяется от 0 до диапазона значений для столбца расстояния 4000 до 5000 и для столбца distance2, когда значение изменяется от 0 до диапазона от 3000 до 4000.

вот мой примердф

df=pd.DataFrame({'value':[3,4,7,8,11,20,15,20,15,16],
             'ID':[2,2,8,8,8,2,2,2,5,5],
             'distance':[0,0,0,4008,0,0,4820,0,0,0],'distance2':[0,0,0,3006,0,0,0,1,3990,0]})





    value  ID  distance  distance2
0      3   2         0          0
1      4   2         0          0
2      7   8         0          0
3      8   8      4008       3006
4     11   8         0          0
5     20   2         0          0
6     15   2      4820          0
7     20   2         0          1
8     15   5         0       3990
9     16   5         0          0
desired output

  value  ID  distance  distance2
0      7   8      4008       3006
1     20   2      4820          0
2     20   2         0       3990

1 Ответ

0 голосов
/ 31 октября 2019

Я пытался изменить принятый ответ из пандам iterrows, получаем значение следующих строк , и это, похоже, работает:

row_iterator = df.iterrows()
_, last = next(row_iterator)
df_new = []

for index, row in row_iterator:
    if ((4000 < row.distance < 5000) & (last.distance == 0)) | ((3000 < row.distance2 < 4000) & (last.distance2 == 0)):
        df_new.append([last.value, last.ID, row.distance, row.distance2])
    last = row
df_new = pd.DataFrame(df_new, columns=df.columns)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...