在使用PySpark添加列时需要一些帮助。我正在尝试切割我的日期字符串,以便我可以获得年份。
我尝试了以下操作,但它没有工作:
df = sqlContext.createDataFrame( [ ("12/12/1980",1,2) ], ("Date","Num", "#"))
df = df.withColumn("Year", df.Date[-4:])
df.show()
答案 0 :(得分:1)
Spark不支持使用负索引进行Python切片切片。你可以
df.withColumn("Year", F.split(df.Date, "/")[2])
但是分割
可能更容易df.withColumn("Year", F.year(F.to_date(df.Date, "dd/MM/yyyy")))
或解析(假设日/月/年格式):
#include <stdio.h>
int main()
{
char buf[100];
char s[100];
int x = 1;
fgets(s, 100, stdin);
snprintf(buf, sizeof buf, s);
printf("Buffer size is: (%d) \nData input: %s \n", strlen(buf), buf );
printf("X equals: %d/ in hex: %x\nMemory address for x: (%p) \n", x, x, &x);
return 0;
}
答案 1 :(得分:0)
您可以使用pyspark.sql.functions
中的内置函数解析日期,然后提取年份:
from pyspark.sql.functions import to_date, year
>>> df = sqlContext.createDataFrame([("12/12/1980",1,2)], ("Date","Num", "#"))
>>> df2 = df.withColumn("Year", year(to_date(df.Date, "dd/MM/yyyy")))
>>> df2.show()
+----------+---+---+----+
| Date|Num| #|Year|
+----------+---+---+----+
|12/12/1980| 1| 2|1980|
+----------+---+---+----+