Python 如何选择数据位于列表中的DateTimeIndex的子集?

Python 如何选择数据位于列表中的DateTimeIndex的子集?,python,pandas,Python,Pandas,假设我有一个idx=pd.DatatimeIndex,频率为一分钟。我还有一个坏日期列表(每个日期的类型都是pd.Timestamp,没有时间信息),我想从原始idx中删除这些日期。如何在熊猫中做到这一点?使用规范化从索引中删除时间部分,这样您就可以进行简单的~+isin选择,即查找不在该坏列表中的日期。如果您需要额外的安全,您可以进一步确保日期列表中的时间部分不具有相同的[x.normalize()for x in bad_dates] 样本数据 代码 使用normalize从索引中删除时间部

假设我有一个
idx=pd.DatatimeIndex
,频率为一分钟。我还有一个坏日期列表(每个日期的类型都是
pd.Timestamp
,没有时间信息),我想从原始
idx
中删除这些日期。如何在熊猫中做到这一点?

使用
规范化
从索引中删除时间部分,这样您就可以进行简单的
~
+
isin
选择,即查找不在该坏列表中的日期。如果您需要额外的安全,您可以进一步确保日期列表中的时间部分不具有相同的
[x.normalize()for x in bad_dates]

样本数据 代码
使用
normalize
从索引中删除时间部分,这样您就可以进行简单的
~
+
isin
选择,即查找日期不在该坏列表中。如果您需要额外的安全,您可以进一步确保日期列表中的时间部分不具有相同的
[x.normalize()for x in bad_dates]

样本数据 代码
请提供一些样本数据不仅提供样本数据,还提供预期输出,请提供一些样本数据不仅提供样本数据,还提供预期输出
import pandas as pd
df = pd.DataFrame(range(9), index=pd.date_range('2010-01-01', freq='11H', periods=9))
bad_dates = [pd.Timestamp('2010-01-02'), pd.Timestamp('2010-01-03')]
df[~df.index.normalize().isin(bad_dates)]

#                     0
#2010-01-01 00:00:00  0
#2010-01-01 11:00:00  1
#2010-01-01 22:00:00  2
#2010-01-04 05:00:00  7
#2010-01-04 16:00:00  8