удалить строки на основе значения в записи списка столбца - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь удалить строки на основе определенных условий c и не могу понять, как это сделать. Мой фрейм данных groads выглядит следующим образом:

     bridge tunnel          x                          y
262732  F     F     [4.9703655, 4.9720589]  [52.8451222, 52.8450346]
262733  F     F     [4.9739675, 4.9741636]  [52.8442294, 52.8442168]
262734  F     F     [4.8682209, 4.8681081]  [52.3388499, 52.3388448]
262735  F     F     [4.8681081, 4.8680897]  [52.3388448, 52.338844]
262736  F     F     [4.8682725, 4.8682432, 4.8682209]   [52.3388522, 52.3388509, 52.3388499]

Как вы можете догадаться, это координаты, но я хочу удалить полную строку, если одна из координат в списке записи выше или ниже определенных значений , Если бы я сохранил эти значения в новом списке, я бы использовал что-то вроде

newlist = [coord_list for coord_list in groads['x'] if coord_list[0] > 5 or coord_list[0] < 4.8]

По сути, это сохраняет нужные мне значения, но я также хотел бы удалить строки (или сохранить соответствующие строки) кадра данных, которые соответствуют этим критериям. Кто-нибудь знает как это сделать? Помощь будет оценена.

Приветствия

1 Ответ

1 голос
/ 08 апреля 2020

Вы можете выбрать первые списки в столбце x путем индексации по str[0], а затем получить значения по Series.between в boolean indexing:

#changed data sample for test
print (df)
       bridge tunnel                                  x  \
262732      F      F             [5.9703655, 4.9720589]   
262733      F      F             [3.9739675, 4.9741636]   
262734      F      F             [4.8682209, 4.8681081]   
262735      F      F             [4.8681081, 4.8680897]   
262736      F      F  [4.8682725, 4.8682432, 4.8682209]   

                                           y  
262732              [52.8451222, 52.8450346]  
262733              [52.8442294, 52.8442168]  
262734              [52.3388499, 52.3388448]  
262735               [52.3388448, 52.338844]  
262736  [52.3388522, 52.3388509, 52.3388499] 


df1 = df[df['x'].str[0].between(4.8, 5, inclusive=False)]
print (df1)
       bridge tunnel                                  x  \
262734      F      F             [4.8682209, 4.8681081]   
262735      F      F             [4.8681081, 4.8680897]   
262736      F      F  [4.8682725, 4.8682432, 4.8682209]   

                                           y  
262734              [52.3388499, 52.3388448]  
262735               [52.3388448, 52.338844]  
262736  [52.3388522, 52.3388509, 52.3388499]  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...