답변:
물론, 당신은 사용할 수 있습니다 .get_loc()
:
In [45]: df = DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})
In [46]: df.columns
Out[46]: Index([apple, orange, pear], dtype=object)
In [47]: df.columns.get_loc("pear")
Out[47]: 2
솔직히 말해서 나는 종종 이것을 직접 필요로하지 않습니다. 색인 번호를 원하는 경우를 확실히 볼 수 있지만 일반적으로 이름으로 액세스하여 원하는 것을 수행합니다 ( df["pear"]
, df[["apple", "orange"]]
또는 어쩌면 df.columns.isin(["orange", "pear"])
).
insert
기존 열 다음에 새 열을 원할 때 사용합니다 .
다음은 목록 이해를 통한 솔루션입니다. cols는 색인을 가져올 열 목록입니다.
[df.columns.get_loc(c) for c in cols if c in df]
cols
보다 적은 수의 요소를 가지 므로 df.columns
수행하는 for c in cols if c in df
것이 더 빠릅니다.
여러 열 일치 항목을 찾으려면 searchsorted
방법 을 사용하여 벡터화 된 솔루션을 사용할 수 있습니다. 따라서 df
데이터 프레임과 query_cols
검색 할 열 이름으로 구현은 다음과 같습니다.
def column_index(df, query_cols):
cols = df.columns.values
sidx = np.argsort(cols)
return sidx[np.searchsorted(cols,query_cols,sorter=sidx)]
샘플 런-
In [162]: df
Out[162]:
apple banana pear orange peach
0 8 3 4 4 2
1 4 4 3 0 1
2 1 2 6 8 1
In [163]: column_index(df, ['peach', 'banana', 'apple'])
Out[163]: array([4, 1, 0])
열 위치에서 열 이름을 원한다면 (OP 질문과 다른 방법으로) 다음을 사용할 수 있습니다.
>>> df.columns.get_values()[location]
@DSM 사용 예 :
>>> df = DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})
>>> df.columns
Index(['apple', 'orange', 'pear'], dtype='object')
>>> df.columns.get_values()[1]
'orange'
다른 방법들:
df.iloc[:,1].name
df.columns[location] #(thanks to @roobie-nuby for pointing that out in comments.)
df.columns[location]
?
.iloc
연산자를 사용할 때 유용 합니다. 여기서 행과 열 모두에 정수만 전달해야합니다.