이것은 내 현재 코드입니다.
from datetime import datetime as dt
df['Age'] = datetime.datetime.now()-pd.to_datetime(df[['Day','Month','Year']])
하지만 내 결과는
0 3380 days 10:37:40.303097
1 3512 days 10:37:40.303097
2 3131 days 10:37:40.303097
3 3739 days 10:37:40.303097
4 4550 days 10:37:40.303097
5 3204 days 10:37:40.303097
6 3813 days 10:37:40.303097
7 5819 days 10:37:40.303097
8 4532 days 10:37:40.303097
9 2444 days 10:37:40.303097
10 2664 days 10:37:40.303097
11 5527 days 10:37:40.303097
12 3706 days 10:37:40.303097
Name: Age, dtype: timedelta64[ns]
위를 연도로 어떻게 변경할 수 있습니까?
Timedelta를 연도로 형식화 할 수없는 것 같습니다. 즉, 1 년 = 365.25 일로 적절한 근사치를 사용할 수 있습니다.
df['Age'] = df['Age'].dt.days #turn timedelta into int number of days
df['Age'] = df['Age']/365.25
소수점이 너무 많으면 Round를 사용할 수 있습니다.
이것은 단지 일을 계산합니다. 더 정확한 값을 원한다면 1 년에 31556952 초의 초를 사용할 수도 있습니다.
df['Seconds'] = df.Age.dt.days*24*3600+df.Age.dt.seconds #turn timedelta into int number of seconds
df['Years'] = df.Seconds/31556952
기본적으로 Timedelta는 일, 시간, 분, 초 등 여러 단위로되어 있습니다. 당신은 그것을 하나의 단위로 옮기고 싶습니다. 이를 수행하는 한 가지 방법은 사용 가능한 단위 중 하나로 변환 한 다음 연도로 변환하는 것입니다. 그 후:
x = pd.Timedelta('3706 days 10:37:40.303097')
x.seconds
>>38260
x.days*24*3600+x.seconds
>>320236660 #Number of seconds in the Timedelta
(x.days*24*3600+x.seconds)/31556952 #Divided by the number of seconds in a year
>>10.14789577903468
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다