numpy.numelta64 값에서 일 수 추출
저는 팬더/피톤을 사용하고 있으며 날짜/시간을 포함하는 df 필드에서 'to_datetime' 함수를 사용하여 생성된 두 개의 날짜 시계열 s1과 s2를 가지고 있습니다.
s2에서 s1을 뺄 때
s3 = s2 - s1
전 s3 타입의 시리즈를 받았습니다.
time delta64[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.nbelta64(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
는 전달한 두 번째 매개 변수에 따라 다양한 방식으로 해석되는 64비트 정수일 뿐입니다('D'
,'ns'
, ...).
당신은 여기에서 더 많은 것을 찾을 수 있습니다.
일 속성을 정수로 가져옵니다.
예:
In [14]: s = pd.Series(pd.timedelta_range(start='1 days', end='12 days', freq='3000T'))
In [15]: s
Out[15]:
0 1 days 00:00:00
1 3 days 02:00:00
2 5 days 04:00:00
3 7 days 06:00:00
4 9 days 08:00:00
5 11 days 10:00:00
dtype: timedelta64[ns]
In [16]: s.dt.days
Out[16]:
0 1
1 3
2 5
3 7
4 9
5 11
dtype: int64
일반적으로 - 속성을 사용하여 축소된 형식의timedelta
.
In [17]: s.dt.components
Out[17]:
days hours minutes seconds milliseconds microseconds nanoseconds
0 1 0 0 0 0 0 0
1 3 2 0 0 0 0 0
2 5 4 0 0 0 0 0
3 7 6 0 0 0 0 0
4 9 8 0 0 0 0 0
5 11 10 0 0 0 0 0
이제 다음을 확인합니다.hours
속성:
In [23]: s.dt.components.hours
Out[23]:
0 0
1 2
2 4
3 6
4 8
5 10
Name: hours, dtype: int64
시간 델타 계열이 있다고 가정합니다.
import pandas as pd
from datetime import datetime
z = pd.DataFrame({'a':[datetime.strptime('20150101', '%Y%m%d')],'b':[datetime.strptime('20140601', '%Y%m%d')]})
td_series = (z['a'] - z['b'])
이 시간 델타 열 또는 열을 변환하는 한 가지 방법은 시간 델타 개체(pandas 0.15.0+)에 캐스팅한 다음 개체에서 날짜를 추출하는 것입니다.
td_series.astype(pd.Timedelta).apply(lambda l: l.days)
또 다른 방법은 시리즈를 일 단위의 시간 델타 64로 캐스팅한 다음 int로 캐스팅하는 것입니다.
td_series.astype('timedelta64[D]').astype(int)
먼저 다음을 사용하여 판다 날짜 시간 열을 변환합니다.
## Convert time in pandas date time
df['Start'] = pd.to_datetime(df['Start'], errors='coerce')
이 작업이 완료되면 다음 명령을 사용하여 두 날짜를 뺍니다.
df["Duration_after subtraction"] = (df['End_Time'] - df['Start_Time'] / np.timedelta64(1, 'm')
시간으로 변환하려면 'm' 대신 'h'를 사용합니다.
언급URL : https://stackoverflow.com/questions/18215317/extracting-days-from-a-numpy-timedelta64-value
'programing' 카테고리의 다른 글
PHP를 사용하는 MariaDB: SQLSTATE[HY000] [2002] 연결이 거부되었습니다. (0) | 2023.08.09 |
---|---|
안드로이드에서 방향 변경을 비활성화하려면 어떻게 해야 합니까? (0) | 2023.08.09 |
Excel에서 Google 스프레드쉬트 쿼리() 재생성 (0) | 2023.08.09 |
대체를 사용할 때 자바스크립트가 첫 번째 인스턴스만 대체하는 이유는 무엇입니까? (0) | 2023.08.09 |
점 표시기가 있는 Android View 호출기를 만드는 방법은 무엇입니까? (0) | 2023.08.09 |