How to find the last monday’s data only from a dataframe in python?

I have a dataframe that contains 1 years of weekly OHLC data.
What do I need ?

  • list only the last monday’s data of each month. For example, May has 5 weeks and I want to list the last monday’s data of may and need to discard the rest. Here’s the code that I tried and I’m able to list the data on weekly basis. I got stuck here!
    Any help would be appreciated!
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta

periods=pd.date_range(start='2021-4-30',periods=60,freq='W')

start = periods[0].strftime('%Y-%m-%d')
end = periods[-1].strftime('%Y-%m-%d')
symbol="^NSEI"
df=yf.download(symbol,start,end,interval="1wk",index=periods)

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You can use groupby(pd.Grouper()) to group by month and get the latest record.

# reset index to flatten columns
df = df.reset_index()
# copy date column to label last monday of a month
df['last_monday_of_month'] = df['Date']
# groupby month and get latest record
df.groupby(pd.Grouper(freq='M', key='Date')).last().reset_index()


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x