Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #106888 > unrolled thread

Re: python pandas convert strings to datetime problems

Started byPeter Otten <__peter__@web.de>
First post2016-04-11 20:41 +0200
Last post2016-04-11 20:41 +0200
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: python pandas convert strings to datetime problems Peter Otten <__peter__@web.de> - 2016-04-11 20:41 +0200

#106888 — Re: python pandas convert strings to datetime problems

FromPeter Otten <__peter__@web.de>
Date2016-04-11 20:41 +0200
SubjectRe: python pandas convert strings to datetime problems
Message-ID<mailman.34.1460400121.15650.python-list@python.org>
Daiyue Weng wrote:

> Hi, I need to compare the years in a Series. The values in the Series is
> like '1996', '2015', '2006-01-02' or '20130101' etc. The code I created
> is,
> 
> col_value_series = pd.to_datetime(col_value_series,
> infer_datetime_format=True) min_year = col_value_series.min().year
> max_year = col_value_series.max().year
> 
> current_year = datetime.date.today().year
> 
> res1 = min_year > 1970
> res2 = max_year < current_year
> return min_year > 1970 and max_year < current_year
> 
> the code is working fine on the values like '20030101' and '2006-01-02',
> which are converted to datetime, i.e. '2003-01-01'. But it converted
> values '1996' or '2015' to '1970-01-01 00:00:00.000001996' and '1970-01-01
> 00:00:00.000002015', which are completely wrong (meaning the years are all
> 1970 now). So how to resolve the issue.

This seems to happen when the year-only dates are integers. Compare:

>>> import pandas as pd
>>> pd.to_datetime(pd.Series(["2010-10-20", 2000]))
0          2010-10-20 00:00:00
1   1970-01-01 00:00:00.000002
dtype: datetime64[ns]
>>> pd.to_datetime(pd.Series(["2010-10-20", "2000"]))
0   2010-10-20
1   2000-01-01
dtype: datetime64[ns]

How is your series created? Perhaps you can ensure that you start out with 
strings only.

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web