В pysparkSQL у меня есть DataFrame с именем bmd2
, например:
DataFrame[genres: string, id: int, tagline: string, title: string, vote_average: double, vote_count: int]
И данные bmd2['genres']
выглядят так:
bmd2.select('genres').show():
+--------------------+
| genres|
+--------------------+
|[{'id': 16, 'name...|
|[{'id': 12, 'name...|
|[{'id': 10749, 'n...|
|[{'id': 35, 'name...|
|[{'id': 35, 'name...|
|[{'id': 28, 'name...|
|[{'id': 35, 'name...|
|[{'id': 28, 'name...|
|[{'id': 28, 'name...|
|[{'id': 12, 'name...|
|[{'id': 35, 'name...|
|[{'id': 35, 'name...|
|[{'id': 10751, 'n...|
|[{'id': 36, 'name...|
|[{'id': 28, 'name...|
|[{'id': 18, 'name...|
|[{'id': 18, 'name...|
|[{'id': 80, 'name...|
|[{'id': 80, 'name...|
|[{'id': 28, 'name...|
+--------------------+
only showing top 20 rows
Тип данных в столбце 'genres' является строковым, но они могут быть перенесены в список dicts с 'eval function' в python. Так как же мне применить здесь eval () для передачи строки в список в каждой строке? Я пробовал много способов:
- bmd2.select ('genres'.astype (' list ')): AttributeError: объект' str '
не имеет атрибута "astype"
- bmd2.select (eval ('genres')): NameError: имя 'genres' не определено
- bmd2.withColumn ('genres', eval ('genres')): NameError: name 'genres'
не определено