DataFrame 은 연쇄적인 연산과 처리를 허용한다.
SQL에서 테이블을 select한 결과가 다시 테이블이 되어 select할 수 있는 것과 유사하다.
DataFrame를 표현할 때 메모리를 점유.
등장하는 모든 DataFrame에 메모리를 할당하려 하면 메모리 고갈됨
따라서 원천 dataframe 을 생성할 때만 메모리를 할당하고 이로부터 파생되는 dataframe은 원천 dataframe을 이미 적재된 메모리에 접근케 하여 메모리 절약
원천 dataframe 의 부분집합에 view 를 형성한다고 보면 됨
원천 dataframe의 부분집합으로 이뤄진 view에 변경을 가하는 셈이다
따라서 파생 dataframe에 수정을 가하는것을 권장하지 않는다
# np.where((condition1) & (condition2), True일때 value, False일 때 value)
df['column1'] = np.where(condition, 0, df['column1'])
# 조건에 맞는 값일 때, 0으로 변경, 아니면 그대로 둠