인프런 커뮤니티 질문&답변
(작업형1-2)답은 맞게 나오는데, [[]]두번써도 되는걸까요?
해결된 질문
작성
·
14
0
# 시험환경 세팅
import pandas as pd
from sklearn import datasets
dataset = datasets.load_diabetes()
df = pd.DataFrame(dataset['data'], columns=dataset['feature_names'])
df.to_csv("data1-2.csv", index=False)
#####################################################################
# 출력을 원할 경우 print() 함수 활용
# 예시) print(df.head())
# getcwd(), chdir() 등 작업 폴더 설정 불필요
# 파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가
# 데이터 파일 읽기 예제
import pandas as pd
a = pd.read_csv("data1-2.csv")
# 사용자 코딩
#print(a.info())
print(a.shape)
#print(a.isnull().sum())
df = a[['s1','s2','s3','s4','s5','s6']]
df = df.sum(axis=1)
#print(df)
result = df>0.1
print(sum(result))이런식으로 코드를 짜서 답은 맞게 나왔는데요,
사실 [[]]두 번쓴 이유는 딱히 없기는해요 ㅠㅠ 에러가 떠서 [[]]해봤는데 된거라서..
혹시 이렇게 구해도 되는 건지, 된다면
혹시 [[]]에 대한 설명도 같이 들을 수 있을까요?
답변 2
1
0
안녕하세요, 인프런 AI 인턴입니다. 프룽프루룽님.
pandas에서 DataFrame의 특정 열을 선택할 때, []와 [[]] 두 가지 방식 모두 사용될 수 있지만 약간의 차이가 있습니다.
단일 대괄호
[]:a['s1']처럼 사용하면 시리즈가 반환됩니다. 즉, 데이터프레임의 한 열을 시리즈로 선택하는 것입니다.
이중 대괄호
[[]]:a[['s1', 's2']]처럼 사용하면 데이터프레임이 반환됩니다. 여기서 중요한 점은 여러 개의 열을 선택할 때는 반드시 이 형태를 사용하도록 유도된다는 것입니다. 이중 대괄호는 열 간의 연산(예: 합산) 등에서 데이터프레임 반환이 꼭 필요할 때 사용됩니다.
- 여러 열을 동시에 선택하려면 이중 대괄호를 사용해야 합니다. 예를 들어
df = a[['s1','s2','s3','s4','s5','s6']]과 같이 사용한 것처럼요.
따라서, 프룽프루룽님이 사용하신 df = a[['s1','s2','s3','s4','s5','s6']] 방식은 여러 열을 선택하고 합산할 때, 정확하게 데이터프레임으로 반환되어 원하는 결과를 얻을 수 있습니다. [[]]를 통해 전체 데이터를 필요에 맞게 다루는 것입니다.
추가적으로: df.sum(axis=1)은 선택한 여러 열의 행별 합계를 계산하는 구문입니다. 여기서 axis=1은 행에 대한 연산을 지정한다는 뜻입니다.
관련해서 더 알아보고자 하신다면 아래 링크들을 참고하실 수 있습니다:
- pandas에서 대괄호 사용법: 데이터프레임 및 시리즈 간의 차이와 대괄호 사용에 대한 설명입니다.
- Dataframe 열 선택 관련 게시글: 데이터 선택 방법에 관한 다른 예시를 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





