我需要比较Series
中的年份。 Series
中的值类似于'1996','2015','2006-01-02'或'20130101'等。我创建的代码是,
min_year = col_value_series.min()
max_year = col_value_series.max()
current_year = datetime.date.today().year
res1 = min_year > 1970
res2 = max_year < current_year
return min_year > 1970 and max_year < current_year
此代码适用于Series
仅包含年份值的情况,例如'1996','2003'。但它在'20030101'或'2006-01-02'时失败了,所以我想知道如何创建一个更好的方法来考虑这两个值。
更新1.我尝试了以下代码,
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
代码在“20030101”和“2006-01-02”等值上运行正常,这些值将转换为日期时间,即“2003-01-01”。但它将'1996'或'2015'的值转换为'1970-01-01 00:00:00.000001996'和'1970-01-01 00:00:00.000002015',这是完全错误的(意味着现在全年都是1970年) )。那么如何解决这个问题。
更新2.事实证明,年份值为int
类型,而不是string
,这就是为什么当年份转换为datetime
时,它变为'1970-01- 01 00:00:00.000001996'。