Python的新手,所以我有以下问题。为什么a不等于b?谢谢。

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

最佳答案

'strptime/strftime'转换以句子大小写形式返回月份输入的字符串,因此您的比较正确地是False

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




您可以在lambda函数返回的字符串上调用upper使其匹配:

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

关于python - 日期类型在strptime之后更改,然后在strftime之后更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38358689/

10-12 21:18