s = pd.Series(["29062017", "01AUG2017"]); s
0 29062017
1 01AUG2017
dtype: object
m = {'JAN' : '01', ..., 'AUG' : '08', ...} # you fill in the rest
s = s.replace(m, regex=True); s
0 29062017
1 01082017
dtype: object
def set_date(col):
# date_formates = ["21 June, 2018", "12/11/2018 09:15:32", "April-21" ]
date_formats = ["%d %B, %Y", "%d/%m/%Y %H:%M:%S", "%B-%y", "%d %B, %Y", "%m/%d/Y"] # Can add different date formats to this list to test
for x in date_formats:
col = pd.to_datetime(col, errors="ignore", format= f"{x}")
col = pd.to_datetime(col, errors="coerce") # To remove errors in the columns like strings or numbers
return col
5条答案
按热度按时间8ulbf1ek1#
可以使用
pd.to_datetime
的格式arg:coerce
参数意味着失败将是NaT
。*并将
NaN
s从一个填入另一个,例如使用fillna
:任何不匹配这两种格式的字符串都将保持为NaT。
slhcrj9b2#
另一种方法是使用Map器和
replace
将月份代码替换为相应的数字:现在你只需要一个
pd.to_datetime
调用:23c0lvtd3#
既然你有两种约会时间...
voj3qocg4#
我想提出一些建议
设置
备选案文1
列表理解
备选案文2
创建 Dataframe
方案2B
创建 Dataframe
选项2C
创建 Dataframe
我估计这是最快的
测试
prdp8dxp5#
下面是我对这个问题的解决方案: