首页 > 解决方案 > Pandas 用 NaT 替换 0 值

问题描述

我有一个日期框,其中包含一个名为“日期”的列,其中包含格式为:年月日的日期。某些月份和日期的值为零,这意味着这些日期无效,因此我需要用 NaT(不是时间)替换这些值的数据。我尝试了以下方法:

df["date"] = df["date"].replace(0, np.nan),也试过:df["date"] = df["date"].replace({'0':np.nan , 0:np.nan}) 也: df["date"] = df["date"].replace(['0', 0], np.nan)

但以上都不起作用。仍然有类似的数据:1970 0 0 1970 1 0 等...

标签: pythonpandasreplace

解决方案


pd.to_datetime与选项一起使用errors='coerce'

样品系列s

Out[31]:
0    1970 0 0
1    1970 1 1
2    1970 1 0
dtype: object

s_out = pd.to_datetime(s, errors='coerce')

In [33]: s_out
Out[33]:
0          NaT
1   1970-01-01
2          NaT
dtype: datetime64[ns]

推荐阅读