[解決済み] datetime、Timestamp、datetime64の相互変換について
質問
を変換するにはどうすればよいですか?
numpy.datetime64
オブジェクトを
datetime.datetime
(または
Timestamp
)?
次のコードでは、datetime、timestamp、datetime64のオブジェクトを作成しています。
import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)
In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)
In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>
In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')
注:Timestampからdatetimeを取得するのは簡単です。
In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)
しかし、どのように
datetime
または
Timestamp
から
numpy.datetime64
(
dt64
)?
.
更新:私のデータセットでやや厄介な例(おそらく動機となる例)があるようです。
dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')
であるべきですが
datetime.datetime(2002, 6, 28, 1, 0)
でなく、長い(!) (
1025222400000000000L
)...
解決方法は?
変換する場合
numpy.datetime64
から
datetime
のUTCで時刻を表すオブジェクトです。
numpy-1.8
:
>>> from datetime import datetime
>>> import numpy as np
>>> dt = datetime.utcnow()
>>> dt
datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)
>>> dt64 = np.datetime64(dt)
>>> ts = (dt64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
>>> ts
1354650685.3624549
>>> datetime.utcfromtimestamp(ts)
datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)
>>> np.__version__
'1.8.0.dev-7b75899'
上記の例では、素朴な
datetime
オブジェクトは
np.datetime64
をUTCの時間として扱う。
変換する場合
datetime
から
np.datetime64
と戻る (
numpy-1.6
):
>>> np.datetime64(datetime.utcnow()).astype(datetime)
datetime.datetime(2012, 12, 4, 13, 34, 52, 827542)
1つの
np.datetime64
オブジェクトのnumpy配列と
np.datetime64
.
を考える
np.datetime64
についてと同じように
np.int8
,
np.int16
などのPythonオブジェクト間の変換に同じメソッドを適用します。
int
,
datetime
と対応するnumpyオブジェクトを生成します。
あなたの "nasty example" は正しく動作します。
>>> from datetime import datetime
>>> import numpy
>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)
datetime.datetime(2002, 6, 28, 0, 0)
>>> numpy.__version__
'1.6.2' # current version available via pip install numpy
を再現することができますね。
long
の値は
numpy-1.8.0
としてインストールされます。
pip install git+https://github.com/numpy/numpy.git#egg=numpy-dev
同じ例です。
>>> from datetime import datetime
>>> import numpy
>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)
1025222400000000000L
>>> numpy.__version__
'1.8.0.dev-7b75899'
を返します。
long
なぜなら
numpy.datetime64
タイプ
.astype(datetime)
は、次のものと同等です。
.astype(object)
は、Python の整数を返す (
long
) の上に
numpy-1.8
.
を得るには
datetime
オブジェクトを作成することができます。
>>> dt64.dtype
dtype('<M8[ns]')
>>> ns = 1e-9 # number of seconds in a nanosecond
>>> datetime.utcfromtimestamp(dt64.astype(int) * ns)
datetime.datetime(2002, 6, 28, 0, 0)
を取得するには
datetime64
は、秒を直接使用するものです。
>>> dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100', 's')
>>> dt64.dtype
dtype('<M8[s]')
>>> datetime.utcfromtimestamp(dt64.astype(int))
datetime.datetime(2002, 6, 28, 0, 0)
は numpyドキュメント は、datetime APIは実験的であり、将来のnumpyのバージョンで変更される可能性があると述べています。
関連
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] UnixのタイムスタンプをDateTimeに、またはその逆に変換するにはどうすればよいですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】文字列をdatetimeに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python カメの描画コマンドとその例
-
Pythonによるjieba分割ライブラリ
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] オフセット無視のデータタイムとオフセット考慮のデータタイムを引き算できない
-
[解決済み] datetimeとPandas Timestampオブジェクトの間の変換
-
[解決済み] パンダです。タイムスタンプをdatetime.dateに変換する
-
[解決済み] DataFrameのカラムタイプをstringからdatetimeに変換する