Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将日期格式准确地转换为日期时间,其中包括1970年之前的日期_Python_Pandas_Datetime_Dataframe_Data Conversion - Fatal编程技术网

Python将日期格式准确地转换为日期时间,其中包括1970年之前的日期

Python将日期格式准确地转换为日期时间,其中包括1970年之前的日期,python,pandas,datetime,dataframe,data-conversion,Python,Pandas,Datetime,Dataframe,Data Conversion,将python熊猫代码视为 datetest = pd.DataFrame({'year':['02','08',23,32,43,68,70,72,85,94]}) newdate = pd.to_datetime(datetest['year'], format='%y') print(newdate) 输出: 0 2002-01-01 1 2008-01-01 2 2023-01-01 3 2032-01-01 4 2043-01-01 5 2068-01-01

将python熊猫代码视为

datetest = pd.DataFrame({'year':['02','08',23,32,43,68,70,72,85,94]})
newdate = pd.to_datetime(datetest['year'], format='%y')
print(newdate)
输出:

0   2002-01-01
1   2008-01-01
2   2023-01-01
3   2032-01-01
4   2043-01-01
5   2068-01-01
6   1970-01-01
7   1972-01-01
8   1985-01-01
9   1994-01-01
Name: year, dtype: datetime64[ns]

那么,如何将2023年、2032年、2043年、2068年分别转换为1923年、1932年、1943年、1968年,保持日期时间格式不变?

您可以使用布尔索引,并将未来的任何日期调整100年

如果此规则过于严格,您可以为可接受的年份设置自己的阈值:

year = pd.datetime.today().year

# If setting your own threshold year eg.
# year = 2030

newdate.loc[newdate.dt.year.gt(year)] -= pd.DateOffset(years=100)
[外]


对数据进行预处理,使用四位数年份,这样就不会有任何歧义了?SamMason是的,可以这样做,但给定的数据比这更复杂,而且需要更多的字符串操作。因此我在寻找更清洁的解决方案谢谢你,克里斯A
0   2002-01-01
1   2008-01-01
2   1923-01-01
3   1932-01-01
4   1943-01-01
5   1968-01-01
6   1970-01-01
7   1972-01-01
8   1985-01-01
9   1994-01-01
Name: year, dtype: datetime64[ns]