2016-07-13 1 views
1

Neu bei Python also habe ich Frage wie folgt. Warum ist a nicht gleich b? Vielen Dank.datumstyp nach strptime und dann strftime geändert?

fundData['SigDate'] 
    0   31DEC2008 
    1   31JAN2009 
    2   28FEB2009 
    3   31MAR2009 
    4   30APR2009 
a=fundData['SigDate'] 
b=fundData['SigDate'].apply(lambda x : datetime.strptime(x,'%d%b%Y').strftime('%d%b%Y')) 
a==b 
    0   False 
    1   False 
    2   False 
    3   False 
+0

beliebiger weißer Raum in der ursprünglichen Definition? das würde von der strptime weggeparst werden und wäre nicht in der strftime-Ausgabe –

Antwort

1

Die 'strptime/strftime' Transformation liefert eine Zeichenkette in Satz Fall für den Monat Eintrag, so dass Ihr Vergleich ist zu Recht False:

>>> from datetime import datetime as dt 
>>> 
>>> x = "31DEC2008" 
>>> dt.strptime(x,'%d%b%Y').strftime('%d%b%Y') 
'31Dec2008' 
>>> 
>>> '31Dec2008' == '31DEC2008' 
False 

Sie upper auf der Saite zurückrufen können in Ihrem Lambda Funktion, damit sie übereinstimmen:

>>> dt.strptime(x,'%d%b%Y').strftime('%d%b%Y').upper() 
'31DEC2008'