web-dev-qa-db-ja.com

pandas pythonで文字列をdatetime形式に変換する方法は?

以下に示すように、trainというデータフレームにstring(object)型のI_DATE列があります。

I_DATE
28-03-2012  2:15:00 PM
28-03-2012  2:17:28 PM
28-03-2012  2:50:50 PM

I_DATEを文字列からデータ時間形式に変換し、入力文字列の形式を指定する方法。私はこれに対するいくつかの答えを見ましたが、AM/PM形式ではありません。

また、パンダの日付の範囲に基づいて行をフィルタリングする方法は?

32
GeorgeOfTheRF

to_datetime を使用します。パーサーがそれを処理するのに十分な形式の文字列である必要はありません。

In [51]:
pd.to_datetime(df['I_DATE'])

Out[51]:
0   2012-03-28 14:15:00
1   2012-03-28 14:17:28
2   2012-03-28 14:50:50
Name: I_DATE, dtype: datetime64[ns]

日付/曜日/時刻コンポーネントにアクセスするには、 dt アクセサーを使用します。

In [54]:
df['I_DATE'].dt.date

Out[54]:
0    2012-03-28
1    2012-03-28
2    2012-03-28
dtype: object

In [56]:    
df['I_DATE'].dt.time

Out[56]:
0    14:15:00
1    14:17:28
2    14:50:50
dtype: object

例として、文字列を使用してフィルタリングできます。

In [59]:
df = pd.DataFrame({'date':pd.date_range(start = dt.datetime(2015,1,1), end = dt.datetime.now())})
df[(df['date'] > '2015-02-04') & (df['date'] < '2015-02-10')]

Out[59]:
         date
35 2015-02-05
36 2015-02-06
37 2015-02-07
38 2015-02-08
39 2015-02-09
52
EdChum