#dataframe #select #julia #subset #sample
#фрейм данных #выбирать #Юля #подмножество #образец
Вопрос:
Здесь алфавиты-это идентификаторы.
data=DataFrame(["A" 2 3 4; "B" 1 2 3;"C" 2 1 2;"D" 2 4 9],:auto) 4 rows × 4 columns x1 x2 x3 x4 Any Any Any Any 1 A 2 3 4 2 B 1 2 3 3 C 2 1 2 4 D 2 4 9
Предположим, что мои выборочные данные имеют;
2 rows × 4 columns x1 x2 x3 x4 Any Any Any Any 1 D 2 4 9 2 A 2 3 4
Я хочу получить оставшиеся данные, которые исключают строки с D и A. Я могу получить его, просто выбрав столбцы 2 и 3. Но мне нужен другой метод для больших наборов данных.
Ответ №1:
Но мне нужен другой метод для больших наборов данных.
Размер набора данных здесь не имеет значения. Если у вас есть какой-либо селектор строк, назовите его rows
тем, с помощью которого вы выбирали строки, "D"
а "A"
затем просто используйте Not(rows)
селектор, чтобы выбрать все оставшиеся строки.
Если у вас нет селектора строк, который вы использовали для создания первого фрейма данных, вот эффективный шаблон, который выполняет необходимый выбор:
data[(!in(Set(["A", "D"]))).(data.x2), :]
Если вы хотите что-то более простое для понимания, но менее эффективное, вы можете использовать:
data[[!(v in ["A", "D"]) for v in df.x2], :]
В качестве дополнительного комментария (поскольку вы хотите работать с большими наборами данных) — более эффективно, чтобы ваши столбцы имели более конкретный тип элемента, чем Any
. Вы можете сузить тип столбца, написав data = identity.(data)
.
Если что-то из того, что я написал выше, будет непонятно, пожалуйста, попросите в комментарии разъяснений.