2017-11-18 4 views
0

Wie kann ich einen Indikator für den letzten Tag des Monats erstellen?Erstellen Sie einen letzten Tag des Monats Indikator in Python

Bitte helfen Sie mir dabei zu kämpfen.

Eingang

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 

Ausgabe

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 
+0

Mögliche Duplikat [Get Letzter Tag des Monats in Python] (https://stackoverflow.com/questions/42950/get-last-day-of-the- Durch die Verwendung von monate-in-python) –

+0

Nicht wirklich ein Betrüger überhaupt –

Antwort

4

Verwenden numpy.where mit 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 

Danke, Anton vBR für Lösung von Wen inspiriert:

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

Offensichtlich die richtige Wahl, wenn pd bereits eine Funktion dafür hat. +1. Inspiriert von @Wen denke ich: 'df ['Dates']. Dt.is_month_end.map ({1: 'Ja', 0: 'Nein'})' ist leichter zu lesen. –

+1

@AntonvBR Mann, das ist in Ordnung, ich bin sicher, ich lerne es von Jez :-) – Wen

2

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 
+1

Schön, war im Begriff, etwas sehr ähnliches zu posten. Ich mochte das map dict um True False zu konvertieren. –

Verwandte Themen