web-dev-qa-db-ja.com

PandasカラムをDateTimeに変換

文字列形式としてインポートされたパンダDataFrameに1つのフィールドがあります。それは日時変数であるべきです。それをdatetime列に変換してから日付に基づいてフィルタリングするにはどうすればよいですか。

例:

  • データフレーム名: raw_data
  • 列名: Mycol
  • 列の値の形式: '05SEP2014:00:00:00.000'
138
Chris

to_datetime 関数を使用して、データと一致するように フォーマット を指定します。

raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
259
chrisb

Mycolの値を操作するには、DataFrameメソッド .apply() を使用します。

>>> df = pd.DataFrame(['05SEP2014:00:00:00.000'],columns=['Mycol'])
>>> df
                    Mycol
0  05SEP2014:00:00:00.000
>>> import datetime as dt
>>> df['Mycol'] = df['Mycol'].apply(lambda x: 
                                    dt.datetime.strptime(x,'%d%b%Y:%H:%M:%S.%f'))
>>> df
       Mycol
0 2014-09-05
38
bernie
raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')

ただし、PythonはA値がDataFrameのスライスのコピーに設定されようとしているという警告を出します。代わりに.loc[row_indexer,col_indexer] = valueを使ってみてください

これは連鎖的な索引付けが原因であると思います。

10
Darth BEHFANS

変換する列が複数ある場合は、次の操作を行います。

df[["col1", "col2", "col3"]] = df[["col1", "col2", "col3"]].apply(pd.to_datetime)
3
Vlad Bezden