Форум сайта python.su
приветствую
есть датасет (df)… в колонке id должны содержать только целые числа, надо удалить строки если id НЕ int (могут попадаться строки, дробные, пусто…)
думаю надо делать так:
df.filter(df.id ….)
но как наложить условие?
вариант:
df.filter(df.id.isNotNull())
очевидно недостаточен…
видимо в условие надо писать вызов функции (в которой будет идти проверка), но как?
Отредактировано pe1601@mail.ru (Ноя. 9, 2022 23:00:23)
Офлайн
ЧТотакое датасет и как он выглядит у вас? Пример?
Офлайн
pe1601@mail.ruпокажите что на входе, и что должно получиться на выходе.
есть датасет (df)
Офлайн
…,“/{”“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?
Отредактировано pe1601@mail.ru (Ноя. 10, 2022 11:51:08)
Офлайн
У вас не получается потому что даже для самого себя вы не можете сформировать мысль
какойто поток сознания
Давайте вы выложите по кусочку файла csv сюда в котором будут валидные данные
А так же второй файл где вы руками уберете то что в результат попасть не должно
А задачу перефразируем ; как добиться желаемого используя pySpasrk
(а скобки не отображаются потому что вставляемый код нужно выделить и нажать кнопочку код в редакторе и выбрать питон)
Отредактировано ZerG (Ноя. 10, 2022 13:12:54)
Офлайн
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 (Ноя. 10, 2022 14:09:16)
Офлайн
пример файла во вложении, должен загружать в 2 колонки, а загружается в 5
Прикреплённый файлы:
ds3.csv (22 байта)
Офлайн
разобрался, вот правильный код:
df = sc.read.option(“delimiter”, “,”)\
.option(“header”, True)\
.option(“escape”,'"')\
.csv(file)
Офлайн
pe1601@mail.ru
разобрался
[code python]сюда вставлять код для правильного отображения[/code]
Офлайн
xam1816он пока понял только как 4 поста создать с одним и тем же вопросом
Офлайн