dataframe, numpy 등 array에서 double-colon(::) slicing
03 Dec 2020 | pandaspandas, 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