2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Python / numpy] np.datetime64 型のデータを ビルトインの datetime.datetime 型にしたい時

Posted at

概要

これってどういう時必要なのか、というと、以下のような時。

python
import numpy as np
from datetime import timedelta

np_today: np.datetime64 = np.datetime64("2023-08-24")
np_tomorrow: np.datetime64 = np_today + timedelta(days=1)

# NOTE: この時、以下のようなエラーが発生する
numpy.core._exceptions._UFuncBinaryResolutionError: ufunc 'add' cannot use operands with types dtype('<M8[ns]') and dtype('O')

1日足したいだけなのに。

調べたこと

調査中、頑張ってる人たちを見かけたけど、

結論

pd.Timestamp だけで OK。

python
import numpy as np
import pandas as pd
from datetime import timedelta

np_today: np.datetime64 = np.datetime64("2023-08-24")
# pd.Timestamp() で変換してあげると、 timedelta を加算できる
np_tomorrow: pd.Timestamp = pd.Timestamp(np_today) + timedelta(days=1)
np_tomorrow
>>> Timestamp('2023-08-25 00:00:00')

参考にした記事

結局 stackoverflow が強い。

また、以下の記事によると、 pd.Timestampdatetime.datetime 型を継承しているようです。

つまり、 datetime.datetime 型で使えるメソッドは、 pd.Timestamp からも呼び出せると言えるのかなと思います。

ただし、以下の公式サイトを見ても、そのような記述は見つけられなかったので、実際に動作確認して使ってくださいね。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?