问题
DOB column sample value is in the format - 1/1/2016
which by default gets converted to object as shown below
DOB object
Converting to date format
df[\'DOB\'] = pd.to_datetime(df[\'DOB\'])
Date converts to
2016-01-26
dtype
is
DOB datetime64[ns]
Now I want to convert this date format to 01/26/2016
or in any other general date formats. How do I do it?
Whatever the method I try it always shows the date in 2016-01-26
format.
回答1:
You can use dt.strftime if you need to convert datetime
to other formats (but note that then dtype
of column will be object
(string
)):
import pandas as pd
df = pd.DataFrame({'DOB': {0: '26/1/2016', 1: '26/1/2016'}})
print (df)
DOB
0 26/1/2016
1 26/1/2016
df['DOB'] = pd.to_datetime(df.DOB)
print (df)
DOB
0 2016-01-26
1 2016-01-26
df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print (df)
DOB DOB1
0 2016-01-26 01/26/2016
1 2016-01-26 01/26/2016
回答2:
Changing the format but not changing the type:
df['date'] = pd.to_datetime(df["date"].dt.strftime('%Y-%m'))
回答3:
The below code worked for me instead of the previous one - try it out !
df['DOB']=pd.to_datetime(df['DOB'].astype(str), format='%m/%d/%Y')
回答4:
Compared to the first answer, I will recommend to use dt.strftime() first, then pd.to_datetime(). In this way, it will still result in the datetime data type.
For example,
import pandas as pd
df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '})
print(df.dtypes)
df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print(df.dtypes)
df['DOB1'] = pd.to_datetime(df['DOB1'])
print(df.dtypes)
回答5:
Below code changes to 'datetime' type and also formats in the given format string. Works well!
df['DOB']=pd.to_datetime(df['DOB'].dt.strftime('%m/%d/%Y'))
回答6:
You can try this it'll convert the date format to DD-MM-YYYY:
df['DOB'] = pd.to_datetime(df['DOB'], dayfirst = True)
来源:https://stackoverflow.com/questions/38067704/how-to-change-the-datetime-format-in-pandas