--------col1-------col2-------col3
0---------1--------a----------NaN
1---------2--------NaN--------NaN
2---------3--------c---------100.0
① df.drop('col2', axis=1)
② df.dropna(axis=1)
③ df.dropna(thresh=2, axis=1)
④ df.dropna(how='all', axis=1)
① df['col1'].sum()
② df[['col1']].sum()
③ df.loc[:, df.columns=='col1'].sum()
④ df.loc[:, [False, False, True]].sum()
① df[2:3]
② df[df['col3']>100]
③ df.loc[2:2]
④ df.loc[2:3]
----------col1---------col2--------col3
0---------1-------------a-----------10
1---------2-------------b-----------20
2---------3-------------c-----------30
① df[~df.duplicated()]
② df[~df.duplicated(keep='last')]
③ df[~df.duplicated(keep=False)]
④ df.drop_duplicates()
① df.groupby(by=['col1', 'col2']).sum()
② df.groupby(by=['col2', 'col1']).sum()
③ df.group(by=['col1', 'col2']).sum()
④ df.groupby(['col1', 'col2']).sum()
<풀이>
②는 NaN 있는 모든 열 삭제.
③는 NaN이 아닌 값이 2개 이상인 열 삭제하므로 'col3' 열만 삭제.
④는 모든 값이 NaN인 열을 삭제하므로 어떤 열도 삭제되지 않음.
③과 ④는 모두 세 번째 행을 반환함. loc 메서드에 슬라이싱 사용할 때 마지막 인덱스도 포함된다.
①과 ④는 모두 세 번째 행을 제외한 데이터프레임을 반환하고, ②는 첫 번째 행을 제외한 데이터프레임을 반환한다.
④에서 매개변수 by를 생략하고 열 이름을 지정할 수 있음. ①과 ②는 그룹으로 묶을 열의 순서가 바뀌었지만 'col3' 열의 합계는 동일.