1. ホーム
  2. python

[解決済み] numpy.timedelta64の値から日を抽出する

2022-12-28 15:37:17

質問

pandas/pythonを使用しており、2つの日付時系列s1、s2があり、日付/時刻を含むdfのフィールドに'to_datetime'関数を使用して生成されています。

s2からs1を引くと

s3 = s2 - s1

という型の系列s3が得られます。

timedelta64[ns]

0    385 days, 04:10:36
1     57 days, 22:54:00
2    642 days, 21:15:23
3    615 days, 00:55:44
4    160 days, 22:13:35
5    196 days, 23:06:49
6     23 days, 22:57:17
7      2 days, 22:17:31
8    622 days, 01:29:25
9     79 days, 20:15:14
10    23 days, 22:46:51
11   268 days, 19:23:04
12                  NaT
13                  NaT
14   583 days, 03:40:39

シリーズの1要素を見るにはどうしたらよいでしょうか。

s3[10]

こんな感じで表示されます。

numpy.timedelta64(2069211000000000,'ns')

どのように私はs3から日を抽出し、それらを整数として保持することができますか(時間/分などにはあまり興味がない)?

どんな助けでも前もってありがとうございます。

どのように解決するのですか?

日精度のタイムデルタに変換できます。日数の整数値を取り出すには、それを1日分のタイムデルタで割ります。

>>> x = np.timedelta64(2069211000000000, 'ns')
>>> days = x.astype('timedelta64[D]')
>>> days / np.timedelta64(1, 'D')
23

あるいは、@PhillipCloud が提案したように、単に days.astype(int) のように timedelta は単なる 64bit 整数であり、渡された 2 番目のパラメータによって様々に解釈されます ( 'D' , 'ns' , ...).

もっと詳しく知りたい方は はこちら .