python - 如何在 python 中获取月份列表的第一天和最后一天?

标签 python pandas

如果我有一个像下面这样的自定义日期列表(但它可以是任意日期):

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/

相关文章:

python - 将 pandas Series 作为列添加到 DataFrame 时出现 Wild NaN

python - IntelliJ Python 单元测试无法导入模块

python - 如何让 Python Argparse 只列出一次选项?

python - 根据名字、姓氏创建电子邮件地址

python - python pandas 需要帮助来减少代码行数和周期时间

python - 如何在 python 中对多个数据帧使用单个过滤器

python - Openpyxl 创建具有工作表名称和特定单元格值的数据框?

python - 有没有办法让 mod_wsgi/Flask 和 mod_dav 共存?

python - 作业编排

python - 计算多对多关系中的行数 (SQLAlchemy)