python - 从键值的RDD创建DataFrame,列表为值
问题描述
我有一个如下的rdd
rdd_1 = ['"columns":["date","appname","appenv","appstate"]']
我想将其转换为如下所示的数据框
+---------+
| columns |
+---------+
|date |
|appname |
|appenv |
|appstate |
+---------+
我尝试了什么:我厌倦了创建如下模式并使用它来创建数据框,但这不起作用
rdd_1_schema = StructType(
[
StructField('columns',ArrayType(StringType()))
])
带有架构的错误输出如下
rdd1.toDF(schema=rdd_1_schema).show()
错误:
TypeError: StructType can not accept object '"columns": in type <type 'str'>
第二次尝试:我尝试使用平面图
rdd1.flatMap(lambda x: map(lambda e: (x[0], e), x[1])).toDF().show()
但它将每个字符串作为列表的元素,例如下面的输出
+---+---+
| _1| _2|
+---+---+
| ''| c|
+---+---+
解决方案
推荐阅读
- c# - 无法修复 Unity 中的单一行为脚本问题
- python - 如何让 Python 的 ElementTree 忽略引号和属性之间缺少空格?
- python - 有条件地提取数据帧行时列表索引超出范围
- graph - 有没有类似于 Stoer–Wagner 算法 mincut 算法的算法?
- powershell - 文件上传 PowerShell 使用
- javascript - 正则表达式仅使用替换方法返回匹配组
- python - 如何使用 Scrapy 跳过子元素
- javascript - 找不到自定义定义打字稿 v3
- amazon-web-services - UUID 作为 DynamoDB 中的主键——好主意还是坏主意?
- android-studio - 为什么我在 Android Studio 3.4.1 中从 Github 克隆项目时 build.gradle (Project) 会消失?