将操作应用于列表中的所有值

时间:2018-11-20 15:08:38

标签: python

我的列表中的值是与开始日期相比的天数增量。我需要将它们转换为日期格式(YYYYDD)。我正在使用以下代码:

import datetime
date = "20180330"
y = int(date[0:4])
m = int(date[4:6])
d = int(date[6:8])
starting_date = datetime.date(y, m, d)
tanor = map(lambda x: starting_date + datetime.timedelta(days=int(x)) 

这似乎不起作用。

3 个答案:

答案 0 :(得分:2)

尝试

import datetime

date = "20180330"
date = datetime.datetime.strptime(date, "%Y%m%d")

list_of_days = [1,2,3]

l = [(date + datetime.timedelta(days=d)).strftime("%Y-%m-%d") for d in list_of_days]
print(l)

输出

['2018-03-31', '2018-04-01', '2018-04-02']

答案 1 :(得分:2)

这可能会帮助您:

import datetime
date = "20180330"
dates = ["20180330","20180430","20160130"]
# Timestamp
datesConverted = map(lambda x: pd.to_datetime(x),dates)
print(list(datesConverted))
# Datetime
datesConverted = map(lambda x: pd.to_datetime(x).date(),dates)
print(list(datesConverted))

我将您的字符串列表转换为日期时间时间戳

列表

答案 2 :(得分:2)

tanor = map(lambda x: starting_date + DT.timedelta(days=int(x))

您没有向map传递任何内容,即:您没有向其提供增量列表。

请注意,如果您使用的是Python 3.x,则map不会立即应用该操作。您将不得不遍历结果或将其传递给列表。

所以:

tanor = list(map(lambda x: starting_date + DT.timedelta(days=int(x)), my_deltas))