【发布时间】:2022-11-04 19:59:39
【问题描述】:
我正在尝试通过使用和运算符来更新我的数据框中的一列。 第一次查询
df1=df1.withcolumn('department',F.when(F.col('dateofjoining')<'2019-09-01','senior'). otherwise (''))
我在第一个查询之后运行的第二个查询
Newcolumn=when((col('department')=='') & (col('dateofjoining')<'2019-12-15'),'junior'). otherwise ('')
df1=df1.withcolumn('department', Newcolumn)
当我运行查询时,我只获得第二个查询的输出,但我需要两个查询的输出,如果不匹配条件,所有其他字段都应该为空。如果需要更多详细信息,请告诉我。
【问题讨论】:
-
两个数据框列具有相同的名称,这意味着第二个会覆盖第一个。你在暗示这个吗?或者,你有什么错误吗?
-
不,@samkart 如果我在第一次查询之前运行我的代码,我不会收到任何错误,它将我的部门列中的值更新为高级,而对于其余行,它是空的,但是当我运行我的第二个查询时,它只提供初级数据.我想同时运行这两个查询并从两者中获取数据
-
日期格式为 yyyy-mm-dd 默认 spark 日期格式
-
这是因为你的
otherwise('')。它将值设置(或重置)为""。您可以链接多个时间——func.when().when().otherwise()可以正常工作。或者,您可以在otherwise()中提供相同的列名 -
您能否显示一个代码,我们如何使用我的代码来实现这一点
标签: python apache-spark pyspark azure-databricks