Python : 데이터 프레임에서 timedelta를 int로 변환


111

timedelta 열의 일 수를 정수로 표현한 팬더 데이터 프레임에 열을 만들고 싶습니다. 'datetime.days'를 사용할 수 있습니까? 아니면 더 수동으로해야합니까?

timedelta 열

7 일 23:29:00

일 정수 열

7


12
사용해 보셨나요 timedelta.days?
Ffisegydd

답변:


160

dt.days속성을 사용하십시오 . 다음을 통해이 속성에 액세스하십시오.

timedelta_series.dt.days

같은 방법으로 secondsmicroseconds속성을 가져올 수도 있습니다 .


11
나는 단순함을 위해이 주석을 좋아하고 다른 라이브러리를 가져올 필요가 없습니다.
NickBraunagel

67

td일련의 타임 델타는 어디에 있습니까 ? 나눗셈은 나노초 델타를 일 델타로 변환하고 int 로의 변환은 하루 전체로 떨어집니다.

import numpy as np

(td / np.timedelta64(1, 'D')).astype(int)

1
감사! 또한 15 분 더 검색 한 후 이것을 발견했습니다. stackoverflow.com/questions/18215317/…
Asaf Hanish 2014-09-03

무엇 /사이의 위해 tdnp?
Jason Goal

timedelta64 나누기 연산자입니다. td를 1 일 시간 델타로 나누면 td로 표시되는 일수가 (분수 일 수 있음) 결과가됩니다. 아니이 경우에 필요하지만, 15 분 간격으로 TD를 나타내는 얼마나 많은 운동 할 말한다면 정말 유용
데이빗 Waterworth

22

Timedelta 개체가있는 읽기 전용 인스턴스 특성 .days, .seconds.microseconds.


6

질문이 "타임 델타의 정수 형식에 액세스하는 방법"이 아니라면 그러나 "데이터 프레임의 timedelta 열을 int로 변환하는 방법은 무엇입니까?" 대답은 약간 다를 수 있습니다. .dt.days접근 자 외에도 df.astype또는pd.to_numeric

다음 옵션 중 하나가 도움이됩니다.

df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')

또는

df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')

안녕하세요, 저는 이것을 시도했지만 ValueError : Cannot convert non-finite values ​​(NA or inf) Cannot convert non-finite values ​​(NA or inf) because nans in the pandas series. 누가 이것을 분류해야하는지 아십니까 ???
Pablito

두 번째 옵션은 나를 위해 일했으며 날짜 값은 유형 timedelta64[ns]이었습니다. 날짜가 NaN 인 경우 먼저 pandas to_datetime함수를 사용 하여 날짜를 datetime으로 변환 한 다음 위의 두 번째 옵션을 사용합니다. 자세한 내용은 to_datetime
Onen simon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.