Timestamp.to_datetime64でPandas配列の日付時刻データを操作:詳細解説とサンプルコード


pandas.Timestamp.to_datetime64() メソッドは、pandas ライブラリで扱う日付時刻データである Timestamp オブジェクトを、数値表現である numpy.datetime64 オブジェクトに変換します。これは、データ分析や可視化において、計算や操作を効率化するために役立ちます。

使い方

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# Timestamp オブジェクトを numpy.datetime64 オブジェクトに変換
datetime64_object = timestamp.to_datetime64()

# 結果を確認
print(type(datetime64_object))
print(datetime64_object)

出力

<class 'numpy.datetime64'>
np.datetime64('2024-06-21T00:36:00Z')

説明

  • 変換された numpy.datetime64 オブジェクトは、データ分析や可視化において、計算や操作を効率化するために使用できます。
  • numpy.datetime64 オブジェクトは、年、月、日、時、分、秒、ナノ秒などの単位で表現された数値データです。
  • timestamp.to_datetime64() メソッドは、Timestamp オブジェクトを numpy.datetime64 オブジェクトに変換します。
  • 例えば、dtype='ms' を指定すると、ミリ秒精度で変換されます。
  • pandas.Timestamp.to_datetime64() メソッドは、dtype パラメータを使用して、numpy.datetime64 オブジェクトの精度を指定することができます。

# ミリ秒精度で変換
datetime64_object_ms = timestamp.to_datetime64(dtype='ms')

# 結果を確認
print(datetime64_object_ms)
np.datetime64('2024-06-21T00:36:00.000000000Z')


例 1: 単一 Timestamp オブジェクトの変換

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# Timestamp オブジェクトを numpy.datetime64 オブジェクトに変換
datetime64_object = timestamp.to_datetime64()

# 結果を確認
print(type(datetime64_object))
print(datetime64_object)

出力

<class 'numpy.datetime64'>
np.datetime64('2024-06-21T00:36:00Z')

例 2: Pandas Series の Timestamp 列の変換

import pandas as pd

# Pandas Seriesを作成
data = {'date': ['2024-06-21', '2024-06-22', '2024-06-23']}
df = pd.DataFrame(data)

# 'date' 列を Timestamp 列に変換
df['date'] = pd.to_datetime(df['date'])

# 'date' 列の Timestamp オブジェクトを numpy.datetime64 オブジェクトに変換
df['date_ns'] = df['date'].to_datetime64(dtype='ns')

# 結果を確認
print(df)

出力

          date        date_ns
0 2024-06-21  2024-06-21T00:00:00Z
1 2024-06-22  2024-06-22T00:00:00Z
2 2024-06-23  2024-06-23T00:00:00Z

例 3: Pandas DataFrame の複数列の変換

import pandas as pd

# Pandas DataFrameを作成
data = {'date': ['2024-06-21', '2024-06-22', '2024-06-23'],
        'time': ['00:36:00', '13:20:00', '18:55:00']}
df = pd.DataFrame(data)

# 'date' 列と 'time' 列を組み合わせて Timestamp 列に変換
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])

# 'datetime' 列の Timestamp オブジェクトをミリ秒精度で numpy.datetime64 オブジェクトに変換
df['datetime_ms'] = df['datetime'].to_datetime64(dtype='ms')

# 結果を確認
print(df)

出力

          date        time                datetime        datetime_ms
0 2024-06-21  00:36:00  2024-06-21 00:36:00Z    1655840000000
1 2024-06-22  13:20:00  2024-06-22 13:20:00Z    1655923200000
2 2024-06-23  18:55:00  2024-06-23 18:55:00Z    1656006900000
  • 変換精度を指定することで、データ分析や可視化に適した形式に変換することができます。
  • 上記の例では、Timestamp.to_datetime64() メソッドを使用して、単一の Timestamp オブジェクト、Pandas SeriesTimestamp 列、そして Pandas DataFrame の複数の列を numpy.datetime64 オブジェクトに変換しています。
  • Python | Pandas


以下に、to_datetime64() の代替方法として、いくつかの方法をご紹介します。

Timestamp.dt.strftime() メソッド

Timestamp.dt.strftime() メソッドは、Timestamp オブジェクトを指定された書式で文字列に変換します。書式には、%Y-%m-%d のように年、月、日などを表す文字列を使用することができます。

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# 文字列形式に変換
date_str = timestamp.dt.strftime('%Y-%m-%d')

# 結果を確認
print(date_str)

出力

2024-06-21

Timestamp.isoformat() メソッド

Timestamp.isoformat() メソッドは、Timestamp オブジェクトを ISO 8601 形式で文字列に変換します。ISO 8601 形式は、国際標準化機構 (ISO) で定められた日付時刻の表現形式です。

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# ISO 8601 形式に変換
iso_str = timestamp.isoformat()

# 結果を確認
print(iso_str)

出力

2024-06-21T00:36:00Z

Timestamp.timetuple() メソッド

Timestamp.timetuple() メソッドは、Timestamp オブジェクトを 9 つの要素を持つタプルに変換します。各要素は、年、月、日、時、分、秒、曜日、週番号、夏時間かどうかを表します。

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# タプル形式に変換
time_tuple = timestamp.timetuple()

# 結果を確認
print(time_tuple)

出力

(2024, 6, 21, 0, 36, 0, 5, 169, 0)

Timestamp.to_pydatetime() メソッド

Timestamp.to_pydatetime() メソッドは、Timestamp オブジェクトを datetime モジュールの datetime オブジェクトに変換します。datetime オブジェクトは、Python 標準ライブラリで提供される日付時刻データを表すクラスです。

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# datetime オブジェクトに変換
datetime_obj = timestamp.to_pydatetime()

# 結果を確認
print(datetime_obj)

出力

datetime.datetime(2024, 6, 21, 0, 36, 0)

Unix 時間スタンプへの変換

Timestamp オブジェクトを Unix 時間スタンプに変換するには、まず Timestamp.timestamp() メソッドを使用して、エポックからの経過秒数を取得します。その後、必要に応じてミリ秒やマイクロ秒などの単位に変換することができます。

import pandas as pd

# Timestamp オブジェクトを作成
timestamp = pd.Timestamp('2024-06-21 00:36:00')

# Unix 時間スタンプを取得
unix_timestamp = timestamp.timestamp()

# ミリ秒に変換
milliseconds = unix_timestamp * 1000

# マイクロ秒に変換
microseconds = unix_timestamp * 1000000

# 結果を確認
print(unix_timestamp)
print(milliseconds)
print(microseconds)
1655839760.