web-dev-qa-db-ja.com

pandasの日時形式を変更する方法

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形式で表示されます。

54
yome

datetimeを他の形式に変換する必要がある場合は dt.strftime を使用できます(ただし、列のdtypeobjectstring)になります)。

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
106
jezrael

形式は変更するが、タイプは変更しない:

df['date'] = pd.to_datetime(df["date"].dt.strftime('%Y-%m'))
8
Yanni Cao

以前のコードの代わりに以下のコードが私のために働いた-それを試してみてください!

df['DOB']=pd.to_datetime(df['DOB'].astype(str), format='%m/%d/%Y')
5
rishi jain

最初の答えと比較して、最初に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)
4
user3512680

以下のコードは「datetime」タイプに変更され、指定されたフォーマット文字列でフォーマットされます。うまくいく!

df['DOB']=pd.to_datetime(df['DOB'].dt.strftime('%m/%d/%Y'))
1
San

これを試して、日付形式をDD-MM-YYYYに変換します。

df['DOB'] = pd.to_datetime(df['DOB'], dayfirst = True)
0
Ashu007