1

I have a datetime index in pandas:

    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

I also have a list of dates in list:

[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)]

Not all the dates are there in the pandas df. What i want to do is select only the dates which are there in the list and not any other dates. The solution which i have come up with is to use a for-loop in datetime range to 'loc' for datetime index in df and append it to another dataframe. I was wondering if there is a simpler way to do this?

1 Answer 1

2

You can use pd.Index.isin to check if your dataframe's index's values are in a given list; this will return a True/ False array with which you can index into the original dataframe to select the rows whose indices are in the list:

dates_in_list = df.index.isin(your_list)
new_df = df[dates_in_list]
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for your help.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.