pandas는 numpy 행렬과 같이 comma를 사용한 복수 인덱싱을 지원하기 위해 다음과 같은 특별한 인덱서 속성을 제공한다.
ix
: 라벨과 숫자를 동시에 지원하는 복수 인덱싱loc
: 라벨 기반의 복수 인덱싱iloc
: 숫자 기반의 복수 인덱싱
In [1]:
data = {
'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]
}
In [2]:
df = pd.DataFrame(data)
df
Out[2]:
In [14]:
# 순차적 indexing 과 동일
df.ix[1:3, ["state", "pop"]]
Out[14]:
In [3]:
df2 = pd.DataFrame(data,
columns=['year', 'state', 'pop'],
index=['one', 'two', 'three', 'four', 'five'])
df2
Out[3]:
In [5]:
# , 이용
df2.ix[["two", "three"], ["state", "pop"]]
Out[5]:
In [6]:
# column에도 integer 기반 indexing 가능
df2.ix[["two", "three"], :2]
Out[6]:
In [7]:
# column에도 Label Slicing 가능
df2.ix[["two", "three"], "state":"pop"]
Out[7]:
In [8]:
# `:` 사용
df2.ix[:, ["state", "pop"]]
Out[8]:
In [9]:
# `:` 사용
df2.ix[["two", "five"], :]
Out[9]:
In [10]:
df = pd.DataFrame(np.random.randn(5, 3))
df
Out[10]:
In [11]:
df.columns = ["c1", "c2", "c3"]
df.ix[0:2, 1:2]
Out[11]:
In [12]:
np.random.seed(1)
df = pd.DataFrame(np.random.randint(1, 11, size=(4,3)),
columns=["A", "B", "C"], index=["a", "b", "c", "d"])
df
Out[12]:
In [13]:
df.ix[["a", "c"], "B":"C"]
Out[13]:
In [14]:
df.ix[[0, 2], 1:3]
Out[14]:
In [15]:
df.loc[["a", "c"], "B":"C"]
Out[15]:
In [17]:
df.ix[2:4, 1:3]
Out[17]:
In [16]:
df.loc[2:4, 1:3]
In [18]:
df.iloc[2:4, 1:3]
Out[18]:
In [19]:
df.iloc[["a", "c"], "B":"C"]