130

Pandas データ フレームがあり、列の 1 つに日付文字列が次の形式で含まれています。YYYY-MM-DD

例えば'2013-10-28'

現時点dtypeで、列の はobjectです。

列の値を Pandas の日付形式に変換するにはどうすればよいですか?

4

10 に答える 10

137

本質的に @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')
于 2013-05-31T09:46:26.553 に答える
132

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
于 2013-05-31T08:36:33.777 に答える
43

多くのデータが 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を参照してください

于 2014-03-19T04:15:07.860 に答える
24

今、あなたはすることができますdf['column'].dt.date

datetime オブジェクトの場合、すべてが 00:00:00 のときに時間が表示されない場合、それは pandas ではないことに注意してください。これは、見栄えを良くしようとする iPython ノートブックです。

于 2015-11-07T00:22:59.540 に答える