Найти - Пользователи
Полная версия: удаление строк из dataset по условию
Начало » Центр помощи » удаление строк из dataset по условию
1 2
pe1601@mail.ru
приветствую
есть датасет (df)… в колонке id должны содержать только целые числа, надо удалить строки если id НЕ int (могут попадаться строки, дробные, пусто…)
думаю надо делать так:
df.filter(df.id ….)

но как наложить условие?
вариант:
df.filter(df.id.isNotNull())
очевидно недостаточен…

видимо в условие надо писать вызов функции (в которой будет идти проверка), но как?
ZerG
ЧТотакое датасет и как он выглядит у вас? Пример?
xam1816
pe1601@mail.ru
есть датасет (df)
покажите что на входе, и что должно получиться на выходе.
pe1601@mail.ru
…,“/{”“name”“: ”“Ingenious Film Partners”“, ”“id”“: 289}, {”“name”“: ”“Twentieth Century Fox Film Corporation”“, ”“id”“: 306}, {”“name”“: ”“Dune Entertainment”“, ”“id”“: 444}, {”“name”“: ”“Lightstorm Entertainment”“, ”“id”“: 574}/”,….
это в csv, при импорте в xls загружается в один столбец (как и должно быть)
но при загрузке в pySpasrk:
sc = SparkSession.builder\
.master("local“)\
.appName('M1')\
.getOrCreate()
df = sc.read.csv('sample_data/ds1.csv')

загружается как 4 столбца, что НЕ верно..

”/“ в начале и конце блока это я поставил, на самом деле квадр.скобки, но тогда в топике не отображается содержимое…

получается что метод .read.csv игнорирует квадр.скобки и рассматривает содержимое как отдельные блоки {…}
такая загрузка приводит к неверной структуре колонок и ломается логика обработки данных, я пытался исправить ситуацию фильтрацией строк (о чем и сказано изначально), но потом сообразился что корень проблемы в загрузке…

но формально исходный мой вопрос (про фильтрацию по условию) в силе, значения в колонке:
0,1,2,….,”ппп",3.1258,null,…
надо оставить только int
df.filter(df.id.isNotNull()) уберет только null, а как убрать float и str?

ZerG
У вас не получается потому что даже для самого себя вы не можете сформировать мысль
какойто поток сознания
Давайте вы выложите по кусочку файла csv сюда в котором будут валидные данные
А так же второй файл где вы руками уберете то что в результат попасть не должно
А задачу перефразируем ; как добиться желаемого используя pySpasrk

(а скобки не отображаются потому что вставляемый код нужно выделить и нажать кнопочку код в редакторе и выбрать питон)
pe1601@mail.ru
1,2,/{”“name”“: ”“Ingenious Film Partners”“, ”“id”“: 289}, {”“name”“: ”“Twentieth Century Fox Film Corporation”“, ”“id”“: 306}, {”“name”“: ”“Dune Entertainment”“, ”“id”“: 444}, {”“name”“: ”“Lightstorm Entertainment”“, ”“id”“: 574}/,3

*вместо / в оригинале квадр.скобки

это строка csv, ее нужно загрузить в 4 колонки, сейчас загружается в 7
вот мой код:

sc = SparkSession.builder\
.master("local“)\
.appName('M1')\
.getOrCreate()
df = sc.read.csv('sample_data/ds1.csv')
pe1601@mail.ru
пример файла во вложении, должен загружать в 2 колонки, а загружается в 5
pe1601@mail.ru
разобрался, вот правильный код:
df = sc.read.option(“delimiter”, “,”)\
.option(“header”, True)\
.option(“escape”,'"')\
.csv(file)
xam1816
pe1601@mail.ru
разобрался
[code python]сюда вставлять код для правильного отображения[/code]
ZerG
xam1816
он пока понял только как 4 поста создать с одним и тем же вопросом
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB