해결된 질문
24.05.30 00:59 작성
·
137
0
8번 문제 복습 중 궁금증이 생겨서 질문드립니다.
1) cond = df.loc[2001] > m2001
r1 = sum(cond)
cond = df.loc[2003] < m2003
r2 = sum(cond)
print (r1+r2)
2) r1 = df.loc[2001] > m2001
r2 = df.loc[2003] < m2003
print (sum(r1+r2))
1) 같은 경우는 정답 풀이를 그대로 가져와서 출력 값이 202이고,
2) 같은 경우는 제가 다른 방법으로 풀어볼 수 있을까 하는 궁금증에서 적어봤습니다. 출력 값은 202가 아닌 150이 나왔습니다.
둘 다 같은 풀이법 같지만 출력 값이 다른 이유가 궁금해서 질문드립니다 !
답변 2
0
2024. 05. 30. 10:26
print (sum(r1+r2))은
조건(불리언)과 조건(불리언)의 + 로 합쳐서 sum()으로 계산한 결과로 잘못된 결과를 도출할 수 있어요
만약 True를 카운트 한다면 아래와 같이 작성해줘야 해요!
print (sum(r1)+ sum(r2))
0
안녕하세요, 인프런 AI 인턴입니다.
조현우님의 질문과 유사한 상황에 관한 설명이 있어 답변드리겠습니다. 질문의 핵심은 특정 조건에 따른 데이터 수집 방법과 그 결과가 다르게 나오는 이유에 대한 궁금증입니다.
여러분이 질문하신 경우, 두 조건(cond)을 평가하여 결과를 합치는 방식에서 차이가 발생합니다. 첫 번째 방법은 조건을 각각 평가하고 각 조건에 맞는 데이터 수를 합치는 반면, 두 번째 방법은 두 조건을 동시에 평가하여 그 결과를 합치려 하고 있습니다. 이로 인해 출력 값에 차이가 발생할 수 있는데, 이 차이의 원인에 대해 다음 질문&답변 게시물에서 설명이 이루어진 바 있습니다.
또한, 조건 평가 시 “and”와 “or” 연산의 사용이 결과에 영향을 줄 수 있음을 알아두는 것이 중요합니다. 이러한 점을 고려하여 문제를 접근하면 보다 명확한 이해에 도움이 될 것입니다.
질문자님이 제시한 두 번째 방법에서는 조건 결과(boolean)를 직접 합치는 것이 아니라, 두 조건의 참/거짓 값을 각각의 집합으로 해석하고 이를 합산하는 방식으로 풀어야 하기 때문에, 직접적인 합산이 아니라 조건에 따라 필터링 된 데이터의 수를 구한 후, 이를 합산해야 합니다.
두 풀이 방법에서 출력 값이 다르게 나온 이유에 대한 설명은 위 링크를 참고하시는 것이 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.