In Python there are multiple DateTime parsers which can parse a date string automatically without providing the datetime format. My problem is that I don't need to cast the datetime, I only need the datetime format.
Example: From "2021-01-01", I want something 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 don't want to list every possible format.
I'm working with pandas, so I can use methods that work either with series or the string DateTime parser.
Any ideas?
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'
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.
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)