【问题标题】:Add '0' before days and months using to_pydatetime()使用 to_pydatetime() 在日期和月份之前添加“0”
【发布时间】:2021-04-14 15:07:01
【问题描述】:

我将数据存储在 S3 存储桶中,该存储桶使用“yyyy/MM/dd”格式来存储每个日期的文件,例如在此示例 S3a 路径中:s3a://mybucket/data/2018/07/03. 这些存储桶中的文件采用 json.gz 格式和我想每天将所有这些文件导入到 spark 数据框中。之后,我想通过 for 循环将这些 spark dfs 提供给一些书面代码:

for date in date_range:
    s3a = 's3a://mybucket/data/{}/{}/{}/*.json.gz'.format(date.year, date.month, date.day)
    df = spark.read.format('json').option("header", "true").load(s3a)
    # Execute code here

为了读取数据,我尝试将date_range 格式化如下:

from datetime import datetime
import pandas as pd
def return_date_range(start_date, end_date):
    return pd.date_range(start=start_date, end=end_date).to_pydatetime().tolist()

date_range = return_date_range(start_date='2018-03-06', end_date='2018-03-12')
date_range

[datetime.datetime(2018, 3, 6, 0, 0),
 datetime.datetime(2018, 3, 7, 0, 0),
 datetime.datetime(2018, 3, 8, 0, 0),
 datetime.datetime(2018, 3, 9, 0, 0),
 datetime.datetime(2018, 3, 10, 0, 0),
 datetime.datetime(2018, 3, 11, 0, 0),
 datetime.datetime(2018, 3, 12, 0, 0)]

问题是pydatetime() 返回没有“0”的日期和月份。如何确保我的代码返回带有 '0' 的值列表,如下所示:

[datetime.datetime(2018, 03, 06, 0, 0),
 datetime.datetime(2018, 03, 07, 0, 0),
 datetime.datetime(2018, 03, 08, 0, 0),
 datetime.datetime(2018, 03, 09, 0, 0),
 datetime.datetime(2018, 03, 10, 0, 0),
 datetime.datetime(2018, 03, 11, 0, 0),
 datetime.datetime(2018, 03, 12, 0, 0)]

【问题讨论】:

标签: python pandas datetime bucket


【解决方案1】:

这是使用.strftime("%Y/%m/%d")的一种方法

例如:

from datetime import datetime
import pandas as pd
def return_date_range(start_date, end_date):
    return pd.date_range(start=start_date, end=end_date).strftime("%Y/%m/%d").tolist()

date_range = return_date_range(start_date='2018-03-06', end_date='2018-03-12')
print(date_range)

输出:

['2018/03/06',
 '2018/03/07',
 '2018/03/08',
 '2018/03/09',
 '2018/03/10',
 '2018/03/11',
 '2018/03/12']

for date in date_range:
    s3a = 's3a://mybucket/data/{}/*.json.gz'.format(date)
    print(s3a)

s3a://mybucket/data/2018/03/06/*.json.gz
s3a://mybucket/data/2018/03/07/*.json.gz
s3a://mybucket/data/2018/03/08/*.json.gz
s3a://mybucket/data/2018/03/09/*.json.gz
s3a://mybucket/data/2018/03/10/*.json.gz
s3a://mybucket/data/2018/03/11/*.json.gz
s3a://mybucket/data/2018/03/12/*.json.gz

【讨论】:

  • f's3a://mybucket/data/{date}/*.json.gz' 似乎更新了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
相关资源
最近更新 更多