해결된 질문
작성
·
48
·
수정됨
0
다음과 같이 코드를 작성했는데, 결과값에 .0 이 붙어서 출력됩니다.
왜 그런 걸까요?
df['출동시간'] = pd.to_datetime(df['출동시간'])
df['도착시간'] = pd.to_datetime(df['도착시간'])
df['time'] = df['도착시간'] - df['출동시간']
result = df.groupby('소방서')['time'].mean()
result = result.sort_values(ascending=False)
result = round(result.dt.total_seconds() / 60)
# round 함수에 반올림 위치를 명시하지 않으면 정수를 반환해야 하지 않나요?)
print(result[0])
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. BD님!
질문해주신 내용은 소방서 별로 ‘출동시간’과 ‘도착시간’의 차이를 구하고, 이를 통해 평균값을 도출한 뒤 정렬한 값을 출력하는 부분에서 결과값에 .0이 붙어서 출력되는 이유
를 알고 싶어 하시는 것으로 보입니다.
round()
함수를 사용하면, provided value will be of float type. 이 때문에 결과값이 소수점까지 포함되어 나타납니다.pandas.Series.dt.total_seconds()
로 구한 결과는 float
값이므로 이를 다룰 때 소수점을 포함하게 됩니다.아래와 같이 round()
뿐만 아니라 int()
변환을 통해 이를 처리할 수 있습니다.
result = round(result.dt.total_seconds() / 60)
result = result.astype(int) # 이러한 부분이 더 문제 해결을 돕습니다.
또한, 사용하려는 메소드와 데이터 타입을 확인하는 것이 중요합니다. 특히, 결과가 항상 소수점 아래 자리를 포함할 때는 int()
함수로 변환하여 이를 해소할 수 있습니다.
sort_values
와 print()
를 사용하여 값을 확인하는 방법과 평가 기준에 대해서 설명됩니다.위의 설명들이 도움이 되셨길 바랍니다. 이상적인 코드를 만들기 위해 다양한 방법을 시도해보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다!