@denislysenko
data engineer

Как разбить один столбец на 2 столбца в spark dataframe?

у меня есть такой датафрейм:

splited_genres_df.show(15)

+-------+--------------------+---------+
|movieId|               title|   genres|
+-------+--------------------+---------+
|      1|    Toy Story (1995)|Adventure|
|      1|    Toy Story (1995)|Animation|
|      1|    Toy Story (1995)| Children|
|      1|    Toy Story (1995)|   Comedy|
|      1|    Toy Story (1995)|  Fantasy|
|      2|      Jumanji (1995)|Adventure|
|      2|      Jumanji (1995)| Children|
|      2|      Jumanji (1995)|  Fantasy|
|      3|Grumpier Old Men ...|   Comedy|
|      3|Grumpier Old Men ...|  Romance|
|      4|Waiting to Exhale...|   Comedy|
|      4|Waiting to Exhale...|    Drama|
|      4|Waiting to Exhale...|  Romance|
|      5|Father of the Bri...|   Comedy|
|      6|         Heat (1995)|   Action|
+-------+--------------------+---------+
only showing top 15 rows


в столбце title у меня находится название фильма и год выпуска этого фильма, как разбить title на два таких столбца:
title который будет хранить в себе название фильма,
year который будет хранить в себе год выпуска этого фильма

?
  • Вопрос задан
  • 314 просмотров
Решения вопроса 2
@Cheypnow
df.withColumn("title_new", split(col("title"), " (").getItem(0))
   .withColumn("year", split(col("title"), " (").getItem(1))

Сплит здесь кривой, но принцип должен быть понятен.
Ответ написан
Комментировать
@denislysenko Автор вопроса
data engineer
movies_df = spark.read.csv('/movies.csv', header=True, inferSchema=True)\
            .withColumn('year', regexp_extract(col('title'), '\((\d{4})\)', 1))\
            .withColumn('title', regexp_extract(col('title'), '(.+)\(\d+\)', 1))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы