【发布时间】:2021-08-05 06:26:51
【问题描述】:
我正在尝试查找我的表中最近的日期时间索引。我使用this post 作为起点,并且正在使用这个 MWE:
import os
import numpy as np
import pandas as pd
from datetime import datetime, date, timedelta
df = pd.DataFrame()
df['datetime'] = pd.date_range(start='2019-01-01', end='2021-01-01', freq='H')
df = df.set_index('datetime')
df['year'] = pd.DatetimeIndex(df.index).year
df['mnth'] = pd.DatetimeIndex(df.index).month
df['day'] = pd.DatetimeIndex(df.index).day
df['dow'] = pd.DatetimeIndex(df.index).dayofweek # Mon=0, ..., Sun=6
df['hour'] = pd.DatetimeIndex(df.index).hour
years = df.year.unique()
idxlist = []
for y in years:
idx1 = df.loc[((df.year==y) & (df.mnth==4) & (df.day<=7) & (df.dow==6) & (df.hour==2))]
#idx1 = df.iloc[df.get_loc(((df.year==y) & (df.mnth==4) & (df.day<=7) & (df.dow==6) & (df.hour==2)), method='nearest')]
idxlist.append(idx1)
编辑基于 Michael Delgado cmets:
我有几年的日常数据,包括正确的日子(每年四月的第一个星期日)。
尽管这适用于我的 MWE,但我的实际数据集包含缺失的数据,并且可能没有恰好凌晨 2 点的数据。数据的间隔大约为 20-35 分钟,因此最接近的值应该距离凌晨 2 点的目标不到 15 分钟。
我想找到最接近 4 月第一个星期日凌晨 2 点的日期时间。这是 DataFrame 中的每一年,但我不知道该怎么做。
【问题讨论】:
-
我建议创建一个列,从正常时间戳中减去凌晨 2 点的时间戳,按绝对值排序,取最大值
-
您想要在任何一年的四月的第一个星期日最接近凌晨 2 点的日期吗?还是只是 2020 年 4 月 5 日?
-
@迈克尔·德尔加多。每年都在
df,谢谢 -
知道了。因此,我们应该忽略示例中将年份设置为
max(df.year)的部分?如果是这样,您能否在问题中进一步阐明您的目标? -
数据是否总是有正确日期的观测值,只是可能不正好是凌晨 2 点?或者最接近的值可能是+/-几天?还是几个月?
标签: python pandas dataframe datetime