xxyao
xxyao

Reputation: 549

pandas how to get the date of n-day before monthend

Suppose I have a dataframe, which the first column is the stock trading date. I represent the date with number for convenience here.

data = pd.DataFrame({'date': [1,2,3,1,2,3,4,1,2,3],
                     'value': range(1, 11)})

I have another dataframe which contain the date of monthend. So that firstly I can get the row of monthend from data like this.

   date value
2  3.0  3.0
6  4.0  7.0
9  3.0  10.0

I want to get the data of n-days before monthend, for example, 1-day before

   date value
1  2.0  2.0
5  3.0  6.0
8  2.0  9.0

How can I code this.

Upvotes: 2

Views: 83

Answers (1)

BENY
BENY

Reputation: 323396

I am using the cumsum with groupby

df1=data.groupby(data.date.eq(1).cumsum()).tail(1)
df1
Out[208]: 
   date  value
2     3      3
6     4      7
9     3     10

df2=data.loc[df1.index-1]
df2
Out[213]: 
   date  value
1     2      2
5     3      6
8     2      9

Upvotes: 1

Related Questions