7

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?

1
  • 1
    How do expect to match e.g. 01 to either month or day? Commented Jan 27, 2022 at 13:13

3 Answers 3

6

In pandas, this is achieved by pandas.tseries.api.guess_datetime_format

from pandas.tseries.api 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'
Sign up to request clarification or add additional context in comments.

Comments

1

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.

1 Comment

This isn't addressing what was asked, though. They're wanting to get "%Y-%m-%d", for example.
0

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)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.