我想写一个函数,它将满足以下条件:-你试图实现的逻辑如下:
1.检查sddgl列的月份是否等于12,月份的日期是否等于26。
1.如果条件为真,则使用date_add函数向sddgl列添加一天,并使用新值更新sddgl列。
1.如果条件为false,则保持sddgl列不变。
我试着跟随:
def sales_logic(sales_data):
if (f.month(sales_data["sddgl"]==12)) & (f.dayofmonth(sales_data["sddgl"]==26)):
sales_data["sddgl"]=date_add(sales_data["sddgl"],1)
else:
sales_data["sddgl"]
# group_by=sales_data.groupBy("sddcto","sddgl","aiac23","aiac23_udc","schnl","schnl_ecom","bu_schnl","bu_schnl_name",sdco)
return sales_data
字符串
但是我得到了这个错误:- ValueError:无法将列转换为bool:请用'&'表示'和','|在构建DataFrame布尔表达式时,' for ' or ','~' for 'not'。
我该怎么解决呢?
1条答案
按热度按时间p8h8hvxi1#
不能像在pyspark中那样分配列。还有你的牙套也不对尝试使用when/otherwise结构:
字符串