단순히 이름이 지정된 팬더 열에 정수로 액세스하려고합니다.
를 사용하여 위치별로 행을 선택할 수 있습니다 df.ix[3]
.
그러나 정수로 열을 선택하는 방법은 무엇입니까?
내 데이터 프레임 :
df=pandas.DataFrame({'a':np.random.rand(5), 'b':np.random.rand(5)})
답변
떠오르는 두 가지 접근 방식 :
>>> df
A B C D
0 0.424634 1.716633 0.282734 2.086944
1 -1.325816 2.056277 2.583704 -0.776403
2 1.457809 -0.407279 -1.560583 -1.316246
3 -0.757134 -1.321025 1.325853 -2.513373
4 1.366180 -1.265185 -2.184617 0.881514
>>> df.iloc[:, 2]
0 0.282734
1 2.583704
2 -1.560583
3 1.325853
4 -2.184617
Name: C
>>> df[df.columns[2]]
0 0.282734
1 2.583704
2 -1.560583
3 1.325853
4 -2.184617
Name: C
편집 : 원래 답변은 사용을 제안 df.ix[:,2]
했지만이 기능은 이제 더 이상 사용되지 않습니다. 사용자는로 전환해야합니다 df.iloc[:,2]
.
답변
를 사용 df.icol(n)
하여 정수로 열에 액세스 할 수도 있습니다 .
업데이트 : icol
더 이상 사용되지 않으며 다음과 같은 방법으로 동일한 기능을 사용할 수 있습니다.
df.iloc[:, n] # to access the column at the nth position
답변
당신이 사용할 수있는 열 범위를 포함하여 열 슬라이싱을 할 .iloc 방법을 사용하여 기반 .loc 또는 인덱스를 사용하여 기반 레이블 :
In [50]: import pandas as pd
In [51]: import numpy as np
In [52]: df = pd.DataFrame(np.random.rand(4,4), columns = list('abcd'))
In [53]: df
Out[53]:
a b c d
0 0.806811 0.187630 0.978159 0.317261
1 0.738792 0.862661 0.580592 0.010177
2 0.224633 0.342579 0.214512 0.375147
3 0.875262 0.151867 0.071244 0.893735
In [54]: df.loc[:, ["a", "b", "d"]] ### Selective columns based slicing
Out[54]:
a b d
0 0.806811 0.187630 0.317261
1 0.738792 0.862661 0.010177
2 0.224633 0.342579 0.375147
3 0.875262 0.151867 0.893735
In [55]: df.loc[:, "a":"c"] ### Selective label based column ranges slicing
Out[55]:
a b c
0 0.806811 0.187630 0.978159
1 0.738792 0.862661 0.580592
2 0.224633 0.342579 0.214512
3 0.875262 0.151867 0.071244
In [56]: df.iloc[:, 0:3] ### Selective index based column ranges slicing
Out[56]:
a b c
0 0.806811 0.187630 0.978159
1 0.738792 0.862661 0.580592
2 0.224633 0.342579 0.214512
3 0.875262 0.151867 0.071244
답변
열 색인 목록을 dataFrame.ix에 전달하여 여러 열에 액세스 할 수 있습니다.
예를 들면 :
>>> df = pandas.DataFrame({
'a': np.random.rand(5),
'b': np.random.rand(5),
'c': np.random.rand(5),
'd': np.random.rand(5)
})
>>> df
a b c d
0 0.705718 0.414073 0.007040 0.889579
1 0.198005 0.520747 0.827818 0.366271
2 0.974552 0.667484 0.056246 0.524306
3 0.512126 0.775926 0.837896 0.955200
4 0.793203 0.686405 0.401596 0.544421
>>> df.ix[:,[1,3]]
b d
0 0.414073 0.889579
1 0.520747 0.366271
2 0.667484 0.524306
3 0.775926 0.955200
4 0.686405 0.544421
답변
.transpose () 메서드는 열을 행으로, 행을 열로 변환하므로 다음과 같이 쓸 수도 있습니다.
df.transpose().ix[3]