research blog for data science

dataframe, numpy 등 array에서 double-colon(::) slicing

|

pandas, numpy 등 자주 헷갈리는 코드 사용을 모아두었습니다.


df[::c]

시작부터 c 간격마다 있는 row를 슬라이싱해줍니다. 자세히 설명하면, 1번째, (1+c)번째, (1+2c)번째, …, (1+nc)번째 row가 선택됩니다. 아래는 예제입니다.

import pandas as pd
import numpy as np
a = np.random.normal(size=200)
b = np.random.uniform(size=200)
sampledf = pd.DataFrame({'A':a,'B':b})
sampledf[::2]
A B
0 0.312234 0.788584
2 -0.123720 0.445176
4 0.411344 0.617469
6 -0.434367 0.674210
8 -0.563221 0.009331
... ... ...
190 1.797756 0.963394
192 -0.679177 0.033222
194 0.975527 0.041236
196 -1.354463 0.450887
198 -2.341788 0.009804

100 rows × 2 columns

위에 sampledf[::2]를 보시면 첫번째(index=0), 세번째(index=2), …., 199번째(index=198)이 선택되는 것을 확인하실 수 있습니다. 2의 간격 크기로 행이 선택되는 것입니다.

df[::-1]

df[::-1] 인 경우는 열의 배치를 뒤집어줍니다. 아래는 예시입니다.

sampledf[::-1]
A B
199 2.600890 0.775489
198 -2.341788 0.009804
197 -0.365103 0.413758
196 -1.354463 0.450887
195 0.685687 0.933069
... ... ...
4 0.411344 0.617469
3 1.703587 0.718288
2 -0.123720 0.445176
1 0.208545 0.459722
0 0.312234 0.788584

200 rows × 2 columns

df[::-c]

마찬가지로, df[::-c] 이면 뒤에 row부터 2간격마다 row가 선택됩니다. 아래는 예시입니다.

sampledf[::-2]
A B
199 2.600890 0.775489
197 -0.365103 0.413758
195 0.685687 0.933069
193 0.267967 0.020342
191 -0.918194 0.917082
... ... ...
9 0.924938 0.837344
7 0.890616 0.096270
5 -0.603043 0.697143
3 1.703587 0.718288
1 0.208545 0.459722

100 rows × 2 columns

Comments