带有日期列表的 Pyspark DF(使用 PANDAS)从今天开始 BACK 1 年

Posted

技术标签:

【中文标题】带有日期列表的 Pyspark DF(使用 PANDAS)从今天开始 BACK 1 年【英文标题】:Pyspark DF with a list of dates (with PANDAS) from today BACK 1 year 【发布时间】:2018-08-01 02:31:56 【问题描述】:

大家早安,

我正在尝试创建一个 Pyspark DF,其中包含 1 年前今天的日期列表。

到目前为止,我可以从今天开始更新列表

import pandas as pd
dates = pd.date_range(pd.datetime.today(), periods=365).tolist()
dates = list(map(pd.Timestamp.to_pydatetime, dates))
dates_df = spark.createDataFrame(dates, T.TimestampType())

但它给了我

value
2018-08-01
2018-08-02
...  
2019-08-02

我试过了

dates ['new_value'] = dates['value'].apply(lambda x: x - pd.DateOffset(years=1)) 

但是不行……我真正想要的是

value
2018-08-01
2018-07-31
...  
2017-07-21

想法?

【问题讨论】:

【参考方案1】:

将您的 pd.date_range 设置为在当天结束,并保持您的经期相同,然后只需反转系列:

dates = pd.date_range(end=pd.datetime.today(), periods=365).tolist()[::-1]

输出:

[Timestamp('2018-07-31 23:06:54.977885', freq='D'),
 Timestamp('2018-07-30 23:06:54.977885', freq='D'),
 Timestamp('2018-07-29 23:06:54.977885', freq='D'),
 Timestamp('2018-07-28 23:06:54.977885', freq='D'),
 Timestamp('2018-07-27 23:06:54.977885', freq='D')
...
 Timestamp('2017-08-05 23:06:54.977885', freq='D'),
 Timestamp('2017-08-04 23:06:54.977885', freq='D'),
 Timestamp('2017-08-03 23:06:54.977885', freq='D'),
 Timestamp('2017-08-02 23:06:54.977885', freq='D'),
 Timestamp('2017-08-01 23:06:54.977885', freq='D')]

【讨论】:

以上是关于带有日期列表的 Pyspark DF(使用 PANDAS)从今天开始 BACK 1 年的主要内容,如果未能解决你的问题,请参考以下文章

在 pyspark 中添加带有压缩列表的新列作为常量值

pyspark 最有效的日期时间戳匹配

如何将免费日期范围添加到 pyspark df

pyspark:使用模式加入?或者将架构转换为列表?

如果日期在季度范围内,PySpark 添加列

如何阻止 pyspark 数据框更改为列表?