如果我有一个像下面这样的自定义日期列表(但它可以是任意日期):
from datetime import datetime, timedelta
base = datetime.today()
date_list = [base - timedelta(days=x) for x in range(0, 1000)]
如何从列表中提取每个月/年的第一个日期并单独提取列表的最后一个日期?
我考虑这样做的一种方法是,如果我将列表放在 pandas.Series
中,然后将日期分组到各自的月/年中,然后查看每个日期的天数并取最低日(第一个日期)和最高日(最后一个日期)。
我只是不知道该怎么做。
要清楚:我试图在自定义列表中找到该月的第一天/最后一天。例如,如果我的列表中只有 2018 年 2 月 15 日。对于我的列表,这将是该月的第一天和最后一天。
最佳答案
创建一个 DataFrame,然后使用 resample
聚合每个月的最大值和最小值。 normalize
去掉了时间部分。
import pandas as pd
(pd.DataFrame(data=pd.to_datetime(date_list).normalize(), index=date_list)
.resample('MS')[0].agg([min, max]))
# min max
#2016-07-01 2016-07-29 2016-07-31
#2016-08-01 2016-08-01 2016-08-31
#2016-09-01 2016-09-01 2016-09-30
#2016-10-01 2016-10-01 2016-10-31
#2016-11-01 2016-11-01 2016-11-30
#2016-12-01 2016-12-01 2016-12-31
#2017-01-01 2017-01-01 2017-01-31
#2017-02-01 2017-02-01 2017-02-28
#2017-03-01 2017-03-01 2017-03-31
#...
关于python - 如何在 python 中获取月份列表的第一天和最后一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55837479/