擅长:python、mysql、java
<pre><code>list1 = [{'BatchNumber':'b1','Reason':'r1.1','value':1,'date':datetime(1700,1,1)},
{'BatchNumber':'b1','Reason':'r1.2','value':1,'date':'NA'},
{'BatchNumber':'b2','Reason':'r2','value':2,'date':datetime(2001,3,4)}]
df = pd.DataFrame(list1)
# Create a function to represent your change
def f(x):
if (isinstance(x, datetime) and x.year < 2000) or x == 'NA':
return pd.NaT
else:
return x
# Apply this function to only the date column
df['date'] = df.date.map(f)
# Output
BatchNumber Reason date value
0 b1 r1.1 NaT 1
1 b1 r1.2 NaT 1
2 b2 r2 2001-03-04 2
</code></pre>
<p><strong>注意事项</strong>:</p>
<ul>
<li>不能用01表示日期中的1(引发一个<code>SyntaxError</code>)</li>
<li>^数据中的{<cd2>}是一个文本值,而不是<code>numpy.nan</code>(实际的<code>NA</code>),因此我们检查字符串<code>'NA'</code></li>
</ul>