Python 使用datetime.date对象列表筛选数据帧行

Python 使用datetime.date对象列表筛选数据帧行,python,pandas,Python,Pandas,问题: type(third_friday_lst) list type(third_friday_lst[0]) datetime.date third_friday_lst [datetime.date(2013, 1, 18), datetime.date(2013, 2, 15), datetime.date(2013, 3, 15), datetime.date(2013, 4, 19), datetime.date(2013, 5, 17), datetime.dat

问题:

type(third_friday_lst)
list

type(third_friday_lst[0])
datetime.date

third_friday_lst

[datetime.date(2013, 1, 18),
 datetime.date(2013, 2, 15),
 datetime.date(2013, 3, 15),
 datetime.date(2013, 4, 19),
 datetime.date(2013, 5, 17),
 datetime.date(2013, 6, 21),
 datetime.date(2013, 7, 19),
 datetime.date(2013, 8, 16),
 datetime.date(2013, 9, 20),
 datetime.date(2013, 10, 18),
 datetime.date(2013, 11, 15)]
我正在尝试使用
datetime.date
对象列表筛选数据帧行。我得到
value错误:数组长度不同:175033对33

数据:

type(third_friday_lst)
list

type(third_friday_lst[0])
datetime.date

third_friday_lst

[datetime.date(2013, 1, 18),
 datetime.date(2013, 2, 15),
 datetime.date(2013, 3, 15),
 datetime.date(2013, 4, 19),
 datetime.date(2013, 5, 17),
 datetime.date(2013, 6, 21),
 datetime.date(2013, 7, 19),
 datetime.date(2013, 8, 16),
 datetime.date(2013, 9, 20),
 datetime.date(2013, 10, 18),
 datetime.date(2013, 11, 15)]
我尝试过的:

type(third_friday_lst)
list

type(third_friday_lst[0])
datetime.date

third_friday_lst

[datetime.date(2013, 1, 18),
 datetime.date(2013, 2, 15),
 datetime.date(2013, 3, 15),
 datetime.date(2013, 4, 19),
 datetime.date(2013, 5, 17),
 datetime.date(2013, 6, 21),
 datetime.date(2013, 7, 19),
 datetime.date(2013, 8, 16),
 datetime.date(2013, 9, 20),
 datetime.date(2013, 10, 18),
 datetime.date(2013, 11, 15)]
如果使用以下代码,我将获得所需的输出,但仅当我使用
third\u friday\u lst[0]
指定列表中的第一项时:

data[data['dt-date'] == third_friday_lst[0]]

                       Date         Time    Open    High    Low   Last Volume   dt-date
Timestamp                               
2013-01-18 08:00:00 2013/1/18   08:00:00    7875.5  7876.0  7867.5  7870.5 1059 2013-01-18
2013-01-18 08:05:00 2013/1/18   08:05:00    7871.0  7878.5  7870.5  7877.5  511 2013-01-18
2013-01-18 08:10:00 2013/1/18   08:10:00    7877.0  7879.0  7875.5  7875.5  226 2013-01-18
2013-01-18 08:15:00 2013/1/18   08:15:00    7875.5  7878.0  7874.5  7876.0  162 2013-01-18
所需输出:

type(third_friday_lst)
list

type(third_friday_lst[0])
datetime.date

third_friday_lst

[datetime.date(2013, 1, 18),
 datetime.date(2013, 2, 15),
 datetime.date(2013, 3, 15),
 datetime.date(2013, 4, 19),
 datetime.date(2013, 5, 17),
 datetime.date(2013, 6, 21),
 datetime.date(2013, 7, 19),
 datetime.date(2013, 8, 16),
 datetime.date(2013, 9, 20),
 datetime.date(2013, 10, 18),
 datetime.date(2013, 11, 15)]
我想使用
第三个星期五
过滤
数据中的行,而不使用列表索引
[0]
,因为我想要列表中包含的所有日期。我不想使用
['dt-date']
列,但如果需要,也可以

谢谢

您可以尝试:

data[data['dt-date'].isin(third_friday_lst)]

谢谢

为了完整起见,我在帖子中提到我不想使用
['dt-date']
列:

data[data.index.to_series().dt.date.isin(third_friday_lst)]

data[data['dt-date'].isin(第三个星期五)]
?这就是我要说的^^^谢谢你,我做到了。如果你添加答案,我会接受。看起来你也可以用稍微简单一点的方式来做:
data[data.index.isin(third\u friday\u lst)]
@EHB实际上这不起作用,因为它只会过滤索引日期时间和日期列表之间的精确匹配,因此只能在午夜获取行