python - 在 select() 中正确使用 when()
问题描述
我想使用 更改列中的数据.when()
。我试过这样做:
x = (
spark.table('my_table')
.select(
'date'
'id',
.when(sf.col('name') == 'x', 'One'),
.when(sf.col('name') == 'y', 'Two'),
.when(sf.col('name') == 'z', 'Three'),
)
不过,我的语法似乎是错误的。我知道在 SQL 中我可以达到同样的效果:
select
date, id
case
when name = 'x' then 'One',
when name = 'y' then 'Two',
when name = 'z' then 'Three'
end as name
from
my_table
解决方案
第一个when
应该是sf.when
,其他when
的应该附加到第一个when
:
x = (
spark.table('my_table')
.select(
'date'
'id',
sf.when(sf.col('name') == 'x', 'One')
.when(sf.col('name') == 'y', 'Two')
.when(sf.col('name') == 'z', 'Three')
.alias('name')
)
)
推荐阅读
- java - ScheduledExecutorService 重复更改延迟
- apache-spark - sqlcontext.read.json 和 spark.read.json 有什么区别
- python - 如何等待协程完成并继续其结果?
- java - 拨出电话上的警报对话框不起作用。CallBlocker 实施失败
- javascript - SQLite - 从临时表问题中选择(Ionic v3)
- bash - $((M & ; 0x10000000)) 是什么意思?
- java - 如何在 Java 中读取文本文件中某一行的特定部分?
- matlab - 如何强制 MATLAB 在 GPU 上运行 CNN
- react-native - 调度操作不会自动重新呈现应用程序
- c++ - 为什么 fscanf() 将数字舍入为整数?