pandas loc在日内数据上的日期



我有一个日内数据框架(索引是DatetimeIndex)。我想要锁定在日内df中的天数(它也是DatetimeIndex,因此它的表示方式类似于日期,但它是YYYY-MM-DD hh:mm:ss和hh:mm:ss = 00:00:00)。

例如:

intraday_df =
Column
Date
2005-01-03 09:30:00    0.9962
2005-01-03 09:31:00    0.9963
2005-01-03 09:32:00    0.9939
2005-01-03 09:33:00    0.9937
2005-01-03 09:34:00    0.9905
...                       ...
2021-09-16 15:56:00  148.7800
2021-09-16 15:57:00  148.7250
2021-09-16 15:58:00  148.7400
2021-09-16 15:59:00  148.8500
2021-09-16 16:00:00  148.7900
days = DatetimeIndex(['2005-03-09', '2005-03-24', '2005-03-31', '2005-04-14',
'2005-04-18', '2005-04-22', '2005-05-24', '2005-05-25',
'2005-06-06', '2005-06-10',
...
'2020-09-10', '2020-09-15', '2020-09-18', '2020-09-28',
'2020-10-12', '2020-10-14', '2020-12-22', '2021-01-11',
'2021-01-28', '2021-05-07'],
dtype='datetime64[ns]', length=200, freq=None)

I figure out something like this

intraday_df[pd.Series(intraday_df.index.date, index=intraday_df.index).isin(days.index.date)]

但它不是那么好,因为我可以看到。我想做这样的东西:

intraday_df[intraday_df.index.to_series().agg(date).isin(days.index.date)]

但是我不知道如何添加(或应用)日期方法…

还是有更好的?

使用DatetimeIndex.floorDatetimeIndex.normalize作为移除次数,输出为datetimes,因此days可能匹配:

intraday_df[intraday_df.index.floor('d').isin(days)]

intraday_df[intraday_df.index.normalize().isin(days)]

或通过DatetimeIndex.date将两者转换为日期:

intraday_df[intraday_df.index.date.isin(days.date)]

你可以简化你的解决方案

intraday_df[intraday_df.index.floor().isin(days)]

试试这个:

intraday_df[pd.Series(intraday_df.index.date).isin(days)]

相关内容

  • 没有找到相关文章

最新更新