首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将电火花列值左移1

将电火花列值左移1
EN

Stack Overflow用户
提问于 2020-08-05 23:09:57
回答 1查看 756关注 0票数 1

我有一个火花放电数据,它看起来像这样:

代码语言:javascript
复制
|name|age|height      |weight             
+-------------+--------------------+------------------------+------------------------+-------------------------+--------------------+------------------+------------------+------------+
|  |Mike       |20|6-7|

如您所见,值和列名没有对齐。例如,"Mike“应该在"name”的列下,而不是年龄。

如何将值由1移至左,以使其与列名匹配?理想的dataframe如下所示:

代码语言:javascript
复制
   |name|age|height  |weight             
    +-------------+--------------------+------------------------+------------------------+-------------------------+--------------------+------------------+------------------+------------+
    | Mike  |20  |6-0|160|

请注意,以上数据只是一个例子。实际上,我有200多个列和超过100万行数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 01:07:10

通过从dataframe中删除.toDF名称列,尝试使用具有新列名的

Example:

代码语言:javascript
复制
df=spark.createDataFrame([('','Mike',20,'6-7',160)],['name','age','height','weight'])
df.show()
#+----+----+------+------+---+
#|name| age|height|weight| _5|
#+----+----+------+------+---+
#|    |Mike|    20|   6-7|160|
#+----+----+------+------+---+

#select all columns except name
df1=df.select(*[i for i in df.columns if i != 'name'])

drop_col=df.columns.pop()
req_cols=[i for i in df.columns if i != drop_col]

df1.toDF(*req_cols).show()
#+----+---+------+------+
#|name|age|height|weight|
#+----+---+------+------+
#|Mike| 20|   6-7|   160|
#+----+---+------+------+

Using spark.createDataFrame():

代码语言:javascript
复制
cols=['name','age','height','weight']

spark.createDataFrame(df.select(*[i for i in df.columns if i != 'name']).rdd,cols).show()
#+----+---+------+------+
#|name|age|height|weight|
#+----+---+------+------+
#|Mike| 20|   6-7|   160|
#+----+---+------+------+

如果您正在创建dataframe reading a file,而则定义具有第一个列名为dummy的模式,那么一旦您读取数据,使用.drop()函数删除该列。

代码语言:javascript
复制
spark.read.schema(<struct_type schema>).csv(<path>).drop('<dummy_column_name>')

spark.read.option("header","true").csv(<path>).toDF(<columns_list_with dummy_column>).drop('<dummy_column_name>')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63274727

复制
相关文章

相似问题

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