python - Pyspark 将年和周数转换为 week_start 日期和 week_end 日期
问题描述
我正在尝试使用 Pyspark 数据框将年和周数转换为周开始日期和周结束日期。
+---------+
|year_week|
+---------+
| 2019-W51|
| 2019-W52|
| 2020-W01|
| 2020-W02|
| 2020-W03|
| 2020-W04|
| 2020-W05|
| 2020-W06|
| 2020-W07|
+---------+
当我尝试应用以下代码时,我收到列对象不可迭代的错误
df = df.withColumn('week_start_date', df.year_week.apply(lambda x: datetime.datetime.strptime(d + '-1', "%Y-W%W-%w")))
错误
TypeError: 'Column' object is not callable
预期结果是:
+---------+----------+----------+
|year_week|week_start| week_end|
+---------+----------+----------+
| 2019-W51|2019-12-16|2019-12-22|
| 2019-W52|2019-12-23|2019-12-29|
| 2020-W01|2019-12-30|2020-01-05|
| 2020-W02|2020-01-06|2020-01-12|
| 2020-W03|2020-01-13|2020-01-19|
| 2020-W04|2020-01-20|2020-01-26|
| 2020-W05|2020-01-27|2020-02-02|
| 2020-W06|2020-02-03|2020-02-09|
| 2020-W07|2020-02-10|2020-02-16|
+---------+----------+----------+
解决方案
根据 Someshwar 的响应,只需对来自 scala 的 python 进行轻微更改。
df1 = df.withColumn("week_start", F.to_date(F.concat(F.col("year_week"), F.lit("-1")), "YYYY-'W'ww-u")).withColumn("week_end", F.next_day(F.col("week_start"), "SUN"))
推荐阅读
- c# - Is there some way to have Newtonsoft.Create call your custom creation method on an interface?
- vue.js - 模板中的道具未与 VueJS 一起显示
- jquery - 如何在 jQuery 中设置切换屏幕的常用速度
- magento-1.9 - 购物车规则对不同产品应用固定折扣
- intellij-idea - 无法加载 jvm dll C:\Program Files\JetBrains\Intelij IDEA Community EDItio 2018.2.2\jre64\\bin\server\jvm.dll
- react-native - 本机基础中的多个输入
- ios - 显示最近的问题 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)?
- haskell - Haskell 乘法索引
- javascript - 打字稿错误:“RRule”仅指一种类型,但在此处用作命名空间
- c - 用随机整数 C 生成数组