In Python there are multiple DateTime parser's which can parse a date string automatically without proving the datetime format. My problem is that i dont need to cast the datetime, but i need just the datetime format.
Example: From "2021-01-01" i want somethings like "%Y-%m-%d" or "yyyy-MM-dd".
My only idea was to try casting with different formats and get the successful one, but i dont want to list every possible formats.
I'm working with pandas so i can use both methods that works with series or just string DateTime parser.
Any ideas?
CodePudding user response:
In pandas, this is achieved by pandas._libs.tslibs.parsing.guess_datetime_format
from pandas._libs.tslibs.parsing import guess_datetime_format
guess_datetime_format('2021-01-01')
# '%Y-%m-%d'
As there will always be an ambiguity on the day/month, you can specify the dayfirst case:
guess_datetime_format('2021-01-01', dayfirst=True)
# '%Y-%d-%m'
CodePudding user response:
Please see which one suits best for you:
df['Column'] = df['Column'].dt.strftime("%Y-%m-%d")
df['Column'] = pd.to_datetime(df['Column']).dt.date
df['Column'] = pd.to_datetime(df['Column']).dt.normalize()
the datatype of first two options will be object;
while the 3rd one with normalize will be datetime.
CodePudding user response:
You can try this way, I am not sure though
for col in df.select_dtypes(include['datetime64']).columns.tolist():
df[col] = df[col].astype(str)
