Я пытаюсь очистить «грязные» даты и преобразовать их в формат день-месяц-год через функцию.Я проверил свою функцию, и она дает правильные результаты.
def date_change(strDate):
if ("-") in strDate:
sp_Str_Dob= strDate.split("-")
elif ("/") in strDate:
sp_Str_Dob= strDate.split("/")
if len(strDate)==4:
return (strDate)
#day processing
length_Day= len(sp_Str_Dob[0])
if length_Day ==1:
new_Day= str(("0" + sp_Str_Dob[0]))
else:
new_Day= str(sp_Str_Dob[0])
#month processing
strMonth= (sp_Str_Dob[1])
if (len(strMonth)) ==3:
new_Month= str((strptime(strMonth,'%b').tm_mon)) #change letter month to number
else:
new_Month= str((strptime(strMonth,'%m').tm_mon)) #month is number
#year processing
strYear= (sp_Str_Dob[2])
length_Year= len(sp_Str_Dob[2])
if length_Year ==2: #if only two digits then 20th cemtury
new_Year= str("19" + sp_Str_Dob[2])
else:
new_Year= str(sp_Str_Dob[2])
new_Date_Str= (new_Day + "/" + new_Month + "/" + new_Year)
print(new_Date_Str)
В настоящее время, если ввод:
- 30-сен-1895
- 22-мар-76
- 14/08/1966
Выход будет
- 30/9/1895
- 22/3 /1976
- 14/8/1966
Я пытаюсь просмотреть столбец ['dob'] в моем подмножестве, который заменит старые значения на new_Date_Str
subset:
dob
ID
1 30-Sep-1895
2 22-Mar-76
3 14/08/1966
Мне пришлось бы изменить функцию, чтобы она не вызывала аргументов, и пройти через каждое значение в ['dob'] в моей функции, однако я немного запутался, как проходить через каждую строку без использованияитэрроу / кортежи, как это не рекомендуется.
Является ли .loc лучшим способом сделать это?
Обновление: любой год, заканчивающийся двумя цифрами, должен быть преобразован в год 20-го века.