Python 日期/日期时间,年份形式变量
我正在使用熊猫自动清理一些CSV文件。 数据如下所示Python 日期/日期时间,年份形式变量,python,pandas,datetime,Python,Pandas,Datetime,我正在使用熊猫自动清理一些CSV文件。 数据如下所示 date value 1 13 Sep 9 2 5 Oct 8 3 10 Oct 99 我使用以下代码将字符串转换为datetime pd.to_datetime(new_df[0].str.replace(' ', ''), format='%d%b') (更换是为了去除有时会出现的额外空间) 这工作正常-除了日期中没有提供年份,熊猫默认为1900年之外 d
date value
1 13 Sep 9
2 5 Oct 8
3 10 Oct 99
我使用以下代码将字符串转换为datetime
pd.to_datetime(new_df[0].str.replace(' ', ''), format='%d%b')
(更换是为了去除有时会出现的额外空间)
这工作正常-除了日期中没有提供年份,熊猫默认为1900年之外
date value
1 1900-09-13 9
2 1900-10-05 8
3 1900-10-10 99
幸运的是,我可以从文件名中获取年份,并将其作为变量“fileyear”备用。但我不确定如何使用它来设置正确的日期
我试过这样的方法:
pd.to_datetime(new_df[0].str.replace(' ', ''), format='%d%b' + '2016')
但这是行不通的。有人知道如何将(部分)已知的日期提供给datetimeformat吗 使用正则表达式删除两个数字之间的空格,然后使用
pd.to\u datetime
df['clean_date'] = pd.to_datetime(df['date'].str.replace('(?<=^\d).*(?=\d)', '') + ' 2016')
date value clean_date
1 1 3 Sep 9 2016-09-13
2 5 Oct 8 2016-10-05
3 10 Oct 99 2016-10-10
df['clean_date']=pd.to_datetime(df['date'].str.replace(“(?使用正则表达式删除两个数字之间的空格,然后使用pd.to_datetime
即
df['clean_date'] = pd.to_datetime(df['date'].str.replace('(?<=^\d).*(?=\d)', '') + ' 2016')
date value clean_date
1 1 3 Sep 9 2016-09-13
2 5 Oct 8 2016-10-05
3 10 Oct 99 2016-10-10
df['clean_date']=pd.to_datetime(df['date'].str.replace(“(?您需要更新日期格式以包含年份%d%b%Y
:
pd.to_datetime(df['date'].str.replace(' ', '') + '2016', format='%d%b%Y')
1 2016-09-13
2 2016-10-05
3 2016-10-10
Name: date, dtype: datetime64[ns]
您需要更新日期格式以包含年份%d%b%Y
:
pd.to_datetime(df['date'].str.replace(' ', '') + '2016', format='%d%b%Y')
1 2016-09-13
2 2016-10-05
3 2016-10-10
Name: date, dtype: datetime64[ns]
如果没有年份,则默认为1900年-因此,您需要做的是在之后更新它(可能是添加116/117年)。或者,修改文本以包含正确的年份,然后将其转换为包含年份的日期时间…最佳方法可能取决于如何/从何处获取年份。因此,可能只是pd.to\u datetime(new_df[0].str.replace(“”,)+'2016',format='%d%b%Y')
?如果没有年份,它将默认为1900-因此您需要做的是在以后更新它(可能通过向它添加116/117年?)。或者,修改文本以包含正确的年份,然后将其转换为包含年份的日期时间…最好的方法可能取决于如何/从何处获取年份。因此,可能只需pd.to_datetime(new_df[0].str.replace(“”,)+“2016”,格式=“%d%b%Y”)
?