【发布时间】:2018-09-06 11:47:12
【问题描述】:
在 pysparkSQL 中,我有一个名为 bmd2 的 DataFrame,如下所示:
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
“流派”列中的数据类型是字符串,但可以在 python 中使用“eval 函数”将它们传输到字典列表。那么我应该如何在这里应用 eval() 来将这里的字符串传输到每一行中?我尝试了很多方法:
- bmd2.select('genres'.astype('list')):AttributeError: 'str' object 没有属性“astype”
- bmd2.select(eval('genres')):NameError: name 'genres' is not defined
- bmd2.withColumn('genres',eval('genres')):NameError: name 'genres' 未定义
【问题讨论】:
-
你想在哪里存储字典列表?
-
仍在'流派'或新列中,都可以
-
我们可以看到没有截断的数据帧吗?如果您也提供示例输出会很有帮助
标签: python apache-spark pyspark apache-spark-sql pyspark-sql