パンダのdatetime64列と1582年10月14日(グレゴリオ暦)の間の時間デルタを秒単位で取得するにはどうすればよいですか?

イバラント

pandasデータフレームをSPSS形式に変換しようとしていますが、datetime64変数の変換で問題が発生します。

次のコードを使用します。

import pandas as pd

import datetime as dt

df['date1'] =  (df['date'] - pd.Timestamp('1582-10-15 00:00')).astype('timedelta64[s]')

または

df['date1'] = (df['date'] - dt.datetime(1582, 10, 15)).astype('timedelta64[s]')

Out of bounds nanosecond timestamp: 1582-10-15 00:00:00エラー発生します。

代わりに1982を楽しく使ってみると、うまくいきます。

1582年から1970年までのエポックやUTC時間などに行くのは難しい方法があることは知っていますが、簡単な方法はありますか?どうもありがとうございました!

piRSquared

Timestampさまざまなうるう秒の処理方法の記録がなく、途中で何が起こったのかについての記録がないため、このようなはるか昔の日付で中断すると思いますしたがって、発生するエラーは、最高の時間精度の内訳です。それは理にかなっている。ずっと前の日付ではそれほど正確ではないということです。

解決

代わりにdt.datetimeを使用してください。それほどの精度は必要ありません。

import pandas as pd

import datetime as dt

epoch = dt.datetime(1582, 10, 15)
date = dt.datetime(2016, 3, 31)

int((date - epoch).total_seconds())

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ