OptimusPrime
OptimusPrime

Reputation: 619

Create a last day of month indicator in python

How can I create an indicator for last day of the month?

Please help I've been struggling on this.

Input

Dates            Item        Sales           
2017-01-01       Apple       10
2017-01-02       Pear        10 
2017-01-31       Apple       10
2017-02-02       Apple       10
2017-01-28       Apple       10

Output

Dates            Item        Sales      Last day of month      
2017-01-01       Apple       10         No    
2017-01-02       Pear        10         No
2017-01-31       Apple       10         Yes
2017-02-02       Apple       10         No
2017-02-28       Apple       10         Yes

Upvotes: 0

Views: 231

Answers (2)

jezrael
jezrael

Reputation: 863711

Use numpy.where with dt.is_month_end:

df['Last day of month'] = np.where(df['Dates'].dt.is_month_end, 'Yes', 'No')
print (df)
       Dates   Item  Sales Last day of month
0 2017-01-01  Apple     10                No
1 2017-01-02   Pear     10                No
2 2017-01-31  Apple     10               Yes
3 2017-02-02  Apple     10                No
4 2017-02-28  Apple     10               Yes

Thanks, Anton vBR for solution inspired by Wen:

df['Dates'].dt.is_month_end.map({1:'Yes',0:'No'}) 

Upvotes: 4

BENY
BENY

Reputation: 323386

By using pd.offsets

df['Last day of month']=(df.Dates==df.Dates+pd.offsets.MonthEnd(0)).map({1:'Yes',0:'No'})
df
Out[275]: 
       Dates   Item  Sales Last day of month
0 2017-01-01  Apple     10                No
1 2017-01-02   Pear     10                No
2 2017-01-31  Apple     10               Yes
3 2017-02-02  Apple     10                No
4 2017-02-28  Apple     10               Yes

Upvotes: 2

Related Questions