Azure Databricks Python基于现有列的内容添加派生列
我在spark中加载了一个来自csv文件的数据帧。但是,我想在数据框中添加两列,这些列的内容取决于其中一列的内容 我准备好的列名为YearWeek,可以包含wkxxxx_-yy或xxxx_-yy,其中xxxx是年份 我需要添加一个名为Period的列和一个名为Year的列 新列期间只能包含值“每周”或“每月”。如果列YearWeek以“wk”开头,则列周期的值应为“Weekly”,否则为“Monthly” 我做了一些非常规的搜索,得到了以下代码:Azure Databricks Python基于现有列的内容添加派生列,python,azure,conditional-statements,databricks,derived,Python,Azure,Conditional Statements,Databricks,Derived,我在spark中加载了一个来自csv文件的数据帧。但是,我想在数据框中添加两列,这些列的内容取决于其中一列的内容 我准备好的列名为YearWeek,可以包含wkxxxx_-yy或xxxx_-yy,其中xxxx是年份 我需要添加一个名为Period的列和一个名为Year的列 新列期间只能包含值“每周”或“每月”。如果列YearWeek以“wk”开头,则列周期的值应为“Weekly”,否则为“Monthly” 我做了一些非常规的搜索,得到了以下代码: > df4 = df3.withcolum
> df4 = df3.withcolumn(NewColumn5, when
> df3.col("YearWeek").startswith("wk"),yearweek[3:6].otherwise(YearWeek[1:4]))\
> .withcolumn(NewColumn1, when df3.col("YearWeek").startswith("wk"),"Weekly".otherwise("Monthly"))
但是,这会导致语法错误
SyntaxError: invalid syntax
File "<command-2818966973632811>", line 61
df4 = df3.withcolumn(NewColumn5, when
df3.col("YearWeek").startswith("wk"),yearweek[3:6].otherwise(YearWeek[1:4]))\
^
SyntaxError: invalid syntax
SyntaxError:无效语法
文件“”,第61行
df4=df3.withcolumn(当
df3.col(“YearWeek”).startswith(“wk”),YearWeek[3:6]。否则(YearWeek[1:4]))\
^
SyntaxError:无效语法
我做错了什么?与此同时,我以不同的方式解决了这个问题。我只是读取csv文件并将它们放在一个大数据框中。之后,我从数据帧生成表
df4.createOrReplaceTempView(tablename)
我使用spark SQL根据YearWeek列的内容添加派生列。其实对我来说很容易,因为我是一个SQL的家伙
df5 = spark.sql("select Somecolumn1,\
Somecolumn2,\
Somecolumn3,\
Somecolumn4,\
YearWeek,\
Somecolumn5,\
Somecolumn6,\
Somecolumn7,\
Somecolumn8,\
Somecolumn9,\
Somecolumn10,\
Somecolumn11,\
Somecolumn12,\
CASE WHEN LEFT(YearWeek,2) = 'WK' THEN 'Weekly' ELSE 'Monthly' END AS Period,\
CASE WHEN LEFT(YearWeek,2) = 'WK' THEN substring(YearWeek, 3,4) ELSE substring(YearWeek,1,4) END AS Year from " + tablename)