datetime - 在 pandas/numpy 中获取每个月的具体最后一天

标签 datetime pandas numpy

我有一个解决方案来获取每个月的最后一个星期四,可重现的代码如下:

import pandas as pd
start  = pd.Timestamp('2016-07-27 00:00:00')
end = pd.Timestamp('2016-11-18 00:00:00')
dt_range = pd.Series(pd.date_range(start, end, freq='W-THU'))
t = dt_range.groupby(dt_range.dt.month).last().values.astype('datetime64[D]')

但是,我认为没有必要生成值范围并对其进行 groupby 操作以获取最后一个星期四。我试过了

dt_range = pd.Series(pd.date_range(start, end, freq='4W-THU'))

但这可能会导致在第五周有星期四的月份中选择第二个上星期四。

我怎样才能更有效地完成这个任务,最好是在 date_range 函数本身?

最佳答案

您可以使用pd.offsets.LastWeekOfMonth来构建自定义频率:

last_thu = pd.offsets.LastWeekOfMonth(weekday=3)
dt_range = pd.Series(pd.date_range('2016-01-01', periods=12, freq=last_thu))

结果输出:

0    2016-01-28
1    2016-02-25
2    2016-03-31
3    2016-04-28
4    2016-05-26
5    2016-06-30
6    2016-07-28
7    2016-08-25
8    2016-09-29
9    2016-10-27
10   2016-11-24
11   2016-12-29

关于datetime - 在 pandas/numpy 中获取每个月的具体最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40750623/

相关文章:

Python - 从一个大型 CSV 文件写入多个每月 CSV 文件 - 自动文件名反射(reflect)月份

sql - mysql日期时间字段

python - 如何将 tf.data 转换应用于 DataFrame

python - 一旦发生,就在 Pandas 中填写一个值

python - 将一个 numpy 数组插入另一个数组而不必担心长度

mysql - 用时间查询mysql数据库

sql - 如何将 varchar 转换为 SQL 中任何格式的日期时间

pandas - 将 Pandas datetime64[ns] 转换为儒略日

python - 如何对字符串数组执行 bincount?

python - 如何使用 Numpy reshape ?