从熊猫的日期时间列表中选择日期时间索引

时间:2021-07-01 18:51:33

标签: python pandas datetime

我在熊猫中有一个日期时间索引:

    High    Low     Open    Close   Volume  Adj Close
Date                        
2021-01-04  14147.950195    13953.750000    14104.349609    14132.900391    495000  14132.900391
2021-01-05  14215.599609    14048.150391    14075.150391    14199.500000    492500  14199.500000
2021-01-06  14244.150391    14039.900391    14240.950195    14146.250000    632300  14146.250000
2021-01-07  14256.250000    14123.099609    14253.750000    14137.349609    559200  14137.349609
2021-01-08  14367.299805    14221.650391    14258.400391    14347.250000    613500  14347.250000
...     ...     ...     ...     ...     ...     ...
2021-06-21  15765.150391    15505.650391    15525.849609    15746.500000    351500  15746.500000
2021-06-22  15895.750000    15752.099609    15840.500000    15772.750000    322200  15772.750000
2021-06-23  15862.950195    15673.950195    15862.799805    15686.950195    287500  15686.950195
2021-06-24  15821.400391    15702.700195    15737.299805    15790.450195    316700  15790.450195
2021-06-25  15870.799805    15772.299805    15839.349609    15860.349609    314600  15860.349609

118 rows × 6 columns

我在列表中还有一个日期列表:

[datetime.date(2021, 1, 4),
 datetime.date(2021, 1, 11),
 datetime.date(2021, 1, 18),
 datetime.date(2021, 1, 25),
 datetime.date(2021, 2, 1),
 datetime.date(2021, 2, 8),
 datetime.date(2021, 2, 15),
 datetime.date(2021, 2, 22),
 datetime.date(2021, 3, 1),
 datetime.date(2021, 3, 8),
 datetime.date(2021, 3, 15),
 datetime.date(2021, 3, 22),
 datetime.date(2021, 3, 29),
 datetime.date(2021, 4, 5),
 datetime.date(2021, 4, 12),
 datetime.date(2021, 4, 19),
 datetime.date(2021, 4, 26),
 datetime.date(2021, 5, 3),
 datetime.date(2021, 5, 10),
 datetime.date(2021, 5, 17),
 datetime.date(2021, 5, 24),
 datetime.date(2021, 5, 31),
 datetime.date(2021, 6, 7),
 datetime.date(2021, 6, 14),
 datetime.date(2021, 6, 21),
 datetime.date(2021, 6, 28),
 datetime.date(2021, 7, 5),
 datetime.date(2021, 7, 12),
 datetime.date(2021, 7, 19),
 datetime.date(2021, 7, 26),
 datetime.date(2021, 8, 2),
 datetime.date(2021, 8, 9),
 datetime.date(2021, 8, 16),
 datetime.date(2021, 8, 23),
 datetime.date(2021, 8, 30),
 datetime.date(2021, 9, 6),
 datetime.date(2021, 9, 13),
 datetime.date(2021, 9, 20),
 datetime.date(2021, 9, 27),
 datetime.date(2021, 10, 4),
 datetime.date(2021, 10, 11),
 datetime.date(2021, 10, 18),
 datetime.date(2021, 10, 25),
 datetime.date(2021, 11, 1),
 datetime.date(2021, 11, 8),
 datetime.date(2021, 11, 15),
 datetime.date(2021, 11, 22),
 datetime.date(2021, 11, 29),
 datetime.date(2021, 12, 6),
 datetime.date(2021, 12, 13),
 datetime.date(2021, 12, 20),
 datetime.date(2021, 12, 27)]

并非所有日期都在熊猫 df 中。我想要做的是只选择列表中的日期,而不是任何其他日期。我提出的解决方案是使用 datetime 范围内的 for 循环到 'loc' 中的日期时间索引 df 并将其附加到另一个数据帧。我想知道是否有更简单的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用 pd.Index.isin 检查数据框的索引值是否在给定列表中;这将返回一个 True/ False 数组,您可以使用该数组索引原始数据帧以选择其索引在列表中的行:

dates_in_list = df.index.isin(your_list)
new_df = df[dates_in_list]