Reputation: 619
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
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
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