Python Pyspark分割日期字符串
我有一个数据框,希望拆分Python Pyspark分割日期字符串,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我有一个数据框,希望拆分start\u date列(字符串和年份),并在新列(第4列)中仅保留年份: 正如你所看到的,我可以分割日期,保留年份。但是,对于第3行中的日期:“2014年7月2日”,结果是“2”,而不是2014年 这是我的代码: split_col = fn.split(df7_ct_map['start_date'] , ' ') df = df7_ct_map.withColumn('NAME1', split_col.getItem(0)) df = dff.withColu
start\u date
列(字符串和年份),并在新列(第4列)中仅保留年份:
正如你所看到的,我可以分割日期,保留年份。但是,对于第3行中的日期:“2014年7月2日”,结果是“2”,而不是2014年
这是我的代码:
split_col = fn.split(df7_ct_map['start_date'] , ' ')
df = df7_ct_map.withColumn('NAME1', split_col.getItem(0))
df = dff.withColumn('start_year', split_col.getItem(1))
您可以使用正则表达式,而不是在
,
上拆分
df.withColumn('start_year', regexp_extract(df['start_date'], '\\d{4}', 0))
这将匹配4个连续数字,即一年。您还可以提取列的最后4个字符
开始日期
from pyspark.sql import functions as F
df.withColumn('start_year' ,
F.expr('substring(rtrim(start_date), length(start_date) - 4,length(start_date) )' ) )
.show()
+-------------+----------+
| start_date|start_year|
+-------------+----------+
| August 2013| 2013|
| March 2009| 2009|
| July 2, 2014| 2014|
|November 2014| 2014|
+-------------+----------+
from pyspark.sql import functions as F
df.withColumn('start_year' ,
F.expr('substring(rtrim(start_date), length(start_date) - 4,length(start_date) )' ) )
.show()
+-------------+----------+
| start_date|start_year|
+-------------+----------+
| August 2013| 2013|
| March 2009| 2009|
| July 2, 2014| 2014|
|November 2014| 2014|
+-------------+----------+