DOB列のサンプル値の形式は1/1/2016
です。これは、デフォルトで以下に示すようにオブジェクトに変換されます
DOB object
日付形式への変換
df['DOB'] = pd.to_datetime(df['DOB'])
日付はに変換します
2016-01-26
dtype
は
DOB datetime64[ns]
次に、この日付形式を01/26/2016
または他の一般的な日付形式に変換します。どうすればいいのですか?
どの方法を試しても、日付は常に2016-01-26
形式で表示されます。
datetime
を他の形式に変換する必要がある場合は dt.strftime
を使用できます(ただし、列のdtype
は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
形式は変更するが、タイプは変更しない:
df['date'] = pd.to_datetime(df["date"].dt.strftime('%Y-%m'))
以前のコードの代わりに以下のコードが私のために働いた-それを試してみてください!
df['DOB']=pd.to_datetime(df['DOB'].astype(str), format='%m/%d/%Y')
最初の答えと比較して、最初にdt.strftime()を使用し、次にpd.to_datetime()を使用することをお勧めします。このように、それはまだdatetimeデータ型になります。
例えば、
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)
以下のコードは「datetime」タイプに変更され、指定されたフォーマット文字列でフォーマットされます。うまくいく!
df['DOB']=pd.to_datetime(df['DOB'].dt.strftime('%m/%d/%Y'))
これを試して、日付形式をDD-MM-YYYYに変換します。
df['DOB'] = pd.to_datetime(df['DOB'], dayfirst = True)