如何在pyspark的堆栈函数中使用带空格的列名
How to use column names with spaces in stack function in pyspark
我试图对数据框进行逆轴旋转,而数据框具有以下结构
fstcol
第 1 列
第 2 列
一个
1
4
一个
2
5
一个
3
6
我想要这样的数据框:
fstcol
col_name
值
一个
第 1 栏
1
一个
第 1 栏
2
一个
第 1 栏
3
一个
第 2 列
4
一个
第 2 栏
5
一个
第 2 栏
6
我写了下面的代码来转换:
df.selectExpr("fstcol","stack(2, 'col 1', col 1, 'col 2', col 2)")
但是,我收到一个错误,因为列名称包含 space。无法获取 'col 1' 和 'col 2' 的列值。
谁能帮我解决这个问题?
您可以像下面这样使用backticks
df.selectExpr("fstcol","stack(2, 'col 1', `col 1`, 'col 2', `col 2`)")
您必须使用反引号:
df.selectExpr("fstcol", "stack(2, 'col 1', `col 1`, 'col 2', `col 2`) as (col_name, value)")
我试图对数据框进行逆轴旋转,而数据框具有以下结构
fstcol | 第 1 列 | 第 2 列 |
---|---|---|
一个 | 1 | 4 |
一个 | 2 | 5 |
一个 | 3 | 6 |
我想要这样的数据框:
fstcol | col_name | 值 |
---|---|---|
一个 | 第 1 栏 | 1 |
一个 | 第 1 栏 | 2 |
一个 | 第 1 栏 | 3 |
一个 | 第 2 列 | 4 |
一个 | 第 2 栏 | 5 |
一个 | 第 2 栏 | 6 |
我写了下面的代码来转换:
df.selectExpr("fstcol","stack(2, 'col 1', col 1, 'col 2', col 2)")
但是,我收到一个错误,因为列名称包含 space。无法获取 'col 1' 和 'col 2' 的列值。
谁能帮我解决这个问题?
您可以像下面这样使用backticks
df.selectExpr("fstcol","stack(2, 'col 1', `col 1`, 'col 2', `col 2`)")
您必须使用反引号:
df.selectExpr("fstcol", "stack(2, 'col 1', `col 1`, 'col 2', `col 2`) as (col_name, value)")