首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将火花DataFrame的架构转换为另一个DataFrame

将火花DataFrame的架构转换为另一个DataFrame
EN

Stack Overflow用户
提问于 2019-10-23 16:35:53
回答 1查看 1.9K关注 0票数 1

我在PySpark上有一个星火PySpark,我想将它的模式存储到另一个火花DataFrame中。

例如:我有一个样本DataFrame df,看起来像是-

代码语言:javascript
复制
+---+-------------------+
| id|                  v|
+---+-------------------+
|  0| 0.4707538108432022|
|  0|0.39170676690905415|
|  0| 0.8249512619546295|
|  0| 0.3366111661094958|
|  0| 0.8974360488327017|
+---+-------------------+

我可以通过以下方式查看df的模式

代码语言:javascript
复制
df.printSchema()

root
 |-- id: integer (nullable = true)
 |-- v: double (nullable = false)

我需要的是一个DataFrame,它在df上以col_namedtype两列显示上面的信息。

预期产出:

代码语言:javascript
复制
+---------+-------------------+
| col_name|              dtype|
+---------+-------------------+
|       id|            integer|
|        v|             double|
+---------+-------------------+

我怎样才能做到这一点?我找不到关于这件事的任何东西。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-23 16:53:58

最简单的事情是从df.dtypes创建一个数据格式

代码语言:javascript
复制
spark.createDataFrame(df.dtypes, ["col_name", "dtype"]).show()
#+--------+------+
#|col_name| dtype|
#+--------+------+
#|      id|   int|
#|       v|double|
#+--------+------+

但是,如果希望dtype列如printSchema中所示,则可以通过df.schema来实现

代码语言:javascript
复制
spark.createDataFrame(
    [(d['name'], d['type']) for d in df.schema.jsonValue()['fields']],
    ["col_name", "dtype"]
).show()
#+--------+-------+
#|col_name|  dtype|
#+--------+-------+
#|      id|integer|
#|       v| double|
#+--------+-------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58527427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档