python - "Resample"根据其频率的时间戳

标签 python pandas datetime

我有一个带有日期时间和频率的 pandas Timestamp 。然而,日期时间似乎与频率无关。例如,

>>> t = pd.Timestamp('2018-6-6', freq='W-FRI')
>>> t
Timestamp('2018-06-06 00:00:00')

2018 年 6 月 6 日不是星期五。如何从此 Timestamp 获取 2018 年 6 月 1 日(上周五)? (如果 Timestamp 是 2018 年 6 月 1 日,那么它应该返回 2018 年 6 月 1 日。)以下内容有效,但似乎太冗长。

>>> friday = (pd.date_range(t + pd.Timedelta('1D'), 
                            periods=1, 
                            freq='W-FRI')
              - 1)[0]
>>> friday
Timestamp('2018-06-01 00:00:00', freq='W-FRI')

最佳答案

OR 如果已经是星期五 (4),我们可以使用 if 语句来不移动日期。感谢@Ben.T,我们可以将其与定义的频率工作日进行比较,从而使其更加通用。

import pandas as pd

t = pd.Timestamp('2018-6-7', freq='W-FRI')
friday = t if t.weekday() == t.freq.weekday else t-1

print(friday)

返回:

2018-06-01 00:00:00

关于python - "Resample"根据其频率的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727668/

相关文章:

python - 在屈服时连接

python - 将 Pandas 数据框的子集与 Scipy Kmeans 一起使用?

sql-server - 如何删除日期时间值的时间部分(SQL Server)?

python - 根据列中的值制作列表

javascript - 将以秒为单位的时间间隔转换为更易读的形式

PHP 将日期时间转换为秒

python - matplotlib/pandas条形图的简单定制(标签、刻度等)

python - 使用带修饰协程的单个事件循环返回 future 结果

python - 解析器必须是字符串或字符流,而不是系列

python - 获取 Pandas Dataframe 列作为 2D numpy 数组 dtype