Pandas データ フレームがあり、列の 1 つに日付文字列が次の形式で含まれています。YYYY-MM-DD
例えば'2013-10-28'
現時点dtype
で、列の はobject
です。
列の値を Pandas の日付形式に変換するにはどうすればよいですか?
本質的に @waitingkuo と同等ですが、pd.to_datetime
ここで使用します (少しすっきりしているようで、いくつかの追加機能を提供しますdayfirst
):
In [11]: df
Out[11]:
a time
0 1 2013-01-01
1 2 2013-01-02
2 3 2013-01-03
In [12]: pd.to_datetime(df['time'])
Out[12]:
0 2013-01-01 00:00:00
1 2013-01-02 00:00:00
2 2013-01-03 00:00:00
Name: time, dtype: datetime64[ns]
In [13]: df['time'] = pd.to_datetime(df['time'])
In [14]: df
Out[14]:
a time
0 1 2013-01-01 00:00:00
1 2 2013-01-02 00:00:00
2 3 2013-01-03 00:00:00
取り扱いValueError
について_
df['time'] = pd.to_datetime(df['time'])
投げます
ValueError: Unknown string format
これは、無効な (強制不可能な) 値があることを意味します。それらを に変換しても問題ない場合は、引数を にpd.NaT
追加できます。errors='coerce'
to_datetime
df['time'] = pd.to_datetime(df['time'], errors='coerce')
astypeを使用
In [31]: df
Out[31]:
a time
0 1 2013-01-01
1 2 2013-01-02
2 3 2013-01-03
In [32]: df['time'] = df['time'].astype('datetime64[ns]')
In [33]: df
Out[33]:
a time
0 1 2013-01-01 00:00:00
1 2 2013-01-02 00:00:00
2 3 2013-01-03 00:00:00
多くのデータが CSV ファイルから Pandas に入ると思います。その場合、最初の CSV 読み取り中に日付を単純に変換できます。
dfcsv = pd.read_csv('xyz.csv', parse_dates=[0])
ここで、0 は日付が入っている列を指します。日付をインデックスにしたい場合は、そこに
追加することもできます。, index_col=0
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.htmlを参照してください
今、あなたはすることができますdf['column'].dt.date
datetime オブジェクトの場合、すべてが 00:00:00 のときに時間が表示されない場合、それは pandas ではないことに注意してください。これは、見栄えを良くしようとする iPython ノートブックです。