Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2022 22:46:14

pe1601@mail.ru
Зарегистрирован: 2022-11-09
Сообщения: 20
Репутация: +  -1  -
Профиль   Адрес электронной почты  

удаление строк из dataset по условию

приветствую
есть датасет (df)… в колонке id должны содержать только целые числа, надо удалить строки если id НЕ int (могут попадаться строки, дробные, пусто…)
думаю надо делать так:
df.filter(df.id ….)

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

видимо в условие надо писать вызов функции (в которой будет идти проверка), но как?

Отредактировано pe1601@mail.ru (Ноя. 9, 2022 23:00:23)

Офлайн

#2 Ноя. 10, 2022 10:27:48

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

удаление строк из dataset по условию

ЧТотакое датасет и как он выглядит у вас? Пример?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Ноя. 10, 2022 10:43:42

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1338
Репутация: +  116  -
Профиль   Отправить e-mail  

удаление строк из dataset по условию

pe1601@mail.ru
есть датасет (df)
покажите что на входе, и что должно получиться на выходе.

Офлайн

#4 Ноя. 10, 2022 11:38:28

pe1601@mail.ru
Зарегистрирован: 2022-11-09
Сообщения: 20
Репутация: +  -1  -
Профиль   Адрес электронной почты  

удаление строк из dataset по условию

…,“/{”“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)

Офлайн

#5 Ноя. 10, 2022 13:12:24

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

удаление строк из dataset по условию

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

(а скобки не отображаются потому что вставляемый код нужно выделить и нажать кнопочку код в редакторе и выбрать питон)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Ноя. 10, 2022 13:12:54)

Офлайн

#6 Ноя. 10, 2022 13:56:18

pe1601@mail.ru
Зарегистрирован: 2022-11-09
Сообщения: 20
Репутация: +  -1  -
Профиль   Адрес электронной почты  

удаление строк из dataset по условию

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)

Офлайн

#7 Ноя. 10, 2022 14:08:40

pe1601@mail.ru
Зарегистрирован: 2022-11-09
Сообщения: 20
Репутация: +  -1  -
Профиль   Адрес электронной почты  

удаление строк из dataset по условию

пример файла во вложении, должен загружать в 2 колонки, а загружается в 5

Прикреплённый файлы:
attachment ds3.csv (22 байта)

Офлайн

#8 Ноя. 10, 2022 15:24:13

pe1601@mail.ru
Зарегистрирован: 2022-11-09
Сообщения: 20
Репутация: +  -1  -
Профиль   Адрес электронной почты  

удаление строк из dataset по условию

разобрался, вот правильный код:
df = sc.read.option(“delimiter”, “,”)\
.option(“header”, True)\
.option(“escape”,'"')\
.csv(file)

Офлайн

#9 Ноя. 10, 2022 15:29:17

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1338
Репутация: +  116  -
Профиль   Отправить e-mail  

удаление строк из dataset по условию

pe1601@mail.ru
разобрался
[code python]сюда вставлять код для правильного отображения[/code]

Офлайн

#10 Ноя. 10, 2022 15:46:39

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

удаление строк из dataset по условию

xam1816
он пока понял только как 4 поста создать с одним и тем же вопросом



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version