我在以下系列文章中有多年的经验:
>>>temp
>>> 0 1994
1 1995
2 1996
3 -9999
4 1997
5 2001
dtype: float64
我尝试了许多不同的解决方案,以使这些价值持续数年。我似乎只能得到以下将这些浮点数转换为有效的datetime值的方法。
>>>temp.replace(-9999, np.nan).dropna().astype(int).astype(str).apply(np.datetime64)
>>>0 1994-01-01
1 1995-01-01
2 1996-01-01
4 2001-01-01
5 2002-01-01
dtype: datetime64[ns]
有没有更有效的方法来解决这个问题?我怀疑在这种情况下实际上是否有必要将所有内容转换为整数然后再转换为字符串。
最佳答案
您可以尝试to_datetime
:
print temp
0 1994
1 1995
2 1996
3 -9999
4 1997
5 2001
dtype: int64
print pd.to_datetime(temp, format='%Y', errors='coerce')
0 1994-01-01
1 1995-01-01
2 1996-01-01
3 NaT
4 1997-01-01
5 2001-01-01
dtype: datetime64[ns]
如果需要删除
NaT
,请添加dropna
:print pd.to_datetime(temp, format='%Y', errors='coerce').dropna()
0 1994-01-01
1 1995-01-01
2 1996-01-01
4 1997-01-01
5 2001-01-01
dtype: datetime64[ns]
关于python - float 日期到Datetime的年份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36187684/