<p>我认为这里有更好更简单的第一个解决方案,比如列表理解</p>
<p>或使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>df[datecols] = df[datecols].apply(pd.to_datetime,errors='coerce')
</code></pre>
<hr/>
<pre><code>df[datecols] = df[datecols].apply(lambda x: pd.to_datetime(x,errors='coerce'))
</code></pre>
<p>列表理解的解决方案是可能的-值由<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pop.html" rel="nofollow noreferrer">^{<cd2>}</a>提取,由<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html" rel="nofollow noreferrer">^{<cd3>}</a>连接在一起,也可用于相同的列顺序(如有必要)<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reindex.html" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre><code>df = pd.DataFrame({'Date_1':['2020-05-01','2020-06-02','2020-02-30'],
'Date_2':['1999-02-01','2000','2005-10-52'],
'col1':list('abc')})
print (df)
Date_1 Date_2 col1
0 2020-05-01 1999-02-01 a
1 2020-06-02 2000 b
2 2020-02-30 2005-10-52 c
datecols = ['Date_1','Date_2']
cols = df.columns
df1 = pd.concat([pd.to_datetime(df.pop(x),errors='coerce') for x in datecols], axis=1)
df = df.join(df1).reindex(cols, axis=1)
print (df)
Date_1 Date_2 col1
0 2020-05-01 1999-02-01 a
1 2020-06-02 2000-01-01 b
2 NaT NaT c
</code></pre>