Python 熊猫到datetime不';I don’我没有按预期工作

Python 熊猫到datetime不';I don’我没有按预期工作,python,pandas,Python,Pandas,我有一个df,它的条目大部分是'yyyymmdd'日期字符串,但也有一些'nan'值。请注意,这里这些'nan'是字符串,而不是浮点nan。现在,我想将df中的所有日期字符串转换为pandas datetime格式,同时将nan值转换为nan,NaT等,只要pd.isnull可以检测到任何内容 一个直接的想法是将函数与errors参数一起使用。如文件所述 错误:{'ignore'、'raise'、'concurve'},默认值'raise' -如果'raise',则无效解析将引发异常 -如果“强

我有一个
df
,它的条目大部分是
'yyyymmdd'
日期字符串,但也有一些
'nan'
值。请注意,这里这些
'nan'
是字符串,而不是浮点nan。现在,我想将df中的所有日期字符串转换为pandas datetime格式,同时将
nan
值转换为
nan
NaT
等,只要
pd.isnull
可以检测到任何内容

一个直接的想法是将函数与
errors
参数一起使用。如文件所述

错误:{'ignore'、'raise'、'concurve'}
,默认值
'raise'

-如果
'raise'
,则无效解析将引发异常
-如果
“强制”
,则无效解析将设置为
NaT

-如果
“忽略”
,则无效解析将返回输入

因此,我尝试了我的示例
df

            001002.XY 600123.AB 123456.YZ 555555.GO
ipo_date     20100203  20150605       nan  20090501
delist_date       nan  20170801       nan       nan
其中所有值都是
str
,甚至
nan
实际上都是
'nan'
。然后我尝试了
pd.to_datetime(df,errors='concurve')
,这让我:

Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-27-43c41318d6ab>", line 1, in <module>
    pd.to_datetime(df, errors='coerce')
  File "D:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 512, in to_datetime
    result = _assemble_from_unit_mappings(arg, errors=errors)
  File "D:\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 591, in _assemble_from_unit_mappings
    "[{0}] is missing".format(','.join(req)))
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing
我不知道发生了什么事。尽管如此,所有列都有
object
作为
dtype

df.dtypes
Out[35]: 
001002.XY    object
600123.AB    object
123456.YZ    object
555555.GO    object
dtype: object
但这似乎不是罪魁祸首:我也对各个专栏进行了测试,结果很好:

pd.to_datetime(df.iloc[0, 0])
Out[33]: 
Timestamp('2010-02-03 00:00:00')
pd.to_datetime(df.iloc[1, 0])
Out[34]: 
NaT
pd.to_datetime(df.iloc[:, 0])
Out[36]: 
ipo_date      2010-02-03
delist_date          NaT
Name: 001002.XY, dtype: datetime64[ns]

有人能帮忙或解释一下吗?谢谢

应该稍微不同-将
pd.to_datetime
应用于所有列:

In [6]: df.apply(pd.to_datetime, errors='coerce')
Out[6]:
             001002.XY  600123.AB 123456.YZ  555555.GO
ipo_date    2010-02-03 2015-06-05       NaT 2009-05-01
delist_date        NaT 2017-08-01       NaT        NaT
如果您将数据帧传递给
pd.to_datetime()
,则它需要(年、月、日和可选的:小时、分钟、秒)等列,以便从单独的列中组合日期时间

发件人:

从数据帧的多个列组装日期时间。钥匙 可以是常见的缩写,如[
分钟
second
ms
us
ns
])或相同的复数形式


谢谢我真的应该查阅文档中提供的示例。只是因为它与
系列
一起工作,我自然希望它与
数据帧
一起工作,同样以
applymap
的方式工作。但事实并非如此。