усечение всех строк в столбце dataframe после определенного символа с использованием pyspark - PullRequest
0 голосов
/ 08 июня 2019

У меня есть фрейм данных df, который содержит список строк примерно так:

+-------------+
   Products
+-------------+
|     Z9L57.W3|
|     H9L23.05|
|     PRL57.AF|
+-------------+

Я бы хотел урезать список после '.' характер такой, что это выглядит так:

+--------------+
 Products_trunc
+--------------+
|     Z9L57    |
|     H9L23    |
|     PRL57    |
+--------------+

Я попытался использовать функцию split, но она работает только для одной строки, а не для списков. Я тоже пробовал

df['Products_trunc'] = df['Products'].str.split('.').str[0]

но я получаю следующую ошибку:

TypeError: объект 'Column' не вызывается

У кого-нибудь есть понимание этого? Спасибо

1 Ответ

0 голосов
/ 08 июня 2019

Ваш код выглядит так, будто вы привыкли к пандам.Усечение в pyspark немного отличается.Посмотрите ниже:

from pyspark.sql import functions as F
l = [
(  'Z9L57.W3'  , ),
(  'H9L23.05'  ,),
(  'PRL57.AF'  ,)
]

columns = ['Products']

df=spark.createDataFrame(l, columns)

Функция withColumn позволяет изменять существующие столбцы или создавать новые.Функция принимает 2 параметра: column name и columne expression.Вы измените столбец, когда имя столбца уже существует.

df = df.withColumn('Products', F.split(df.Products, '\.').getItem(0))
df.show()

Вывод:

+--------+
|Products|
+--------+
|   Z9L57|
|   H9L23|
|   PRL57|
+--------+

Вы создадите новый столбец при выборе несуществующего имени столбца.

df = df.withColumn('Products_trunc', F.split(df.Products, '\.').getItem(0))
df.show()

Вывод:

+--------+--------------+ 
|Products|Products_trunc| 
+--------+--------------+ 
|Z9L57.W3|         Z9L57| 
|H9L23.05|         H9L23| 
|PRL57.AF|         PRL57| 
+--------+--------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...