Panda DataFrame 열 머리글에서 목록 가져오기
Panda DataFrame에서 칼럼 헤더의 목록을 받고 싶습니다.Data Frame은 사용자의 입력으로 이루어지기 때문에 몇 개의 컬럼이 있는지, 어떤 컬럼으로 불릴지 알 수 없습니다.
예를 들어 다음과 같은 DataFrame이 주어진 경우:
>>> my_dataframe
y gdp cap
0 1 2 5
1 2 3 9
2 8 7 2
3 3 4 7
4 6 7 7
5 4 8 3
6 8 2 8
7 9 9 10
8 6 6 4
9 10 10 7
다음과 같은 목록을 얻을 수 있습니다.
>>> header_list
['y', 'gdp', 'cap']
다음을 수행하여 값을 목록으로 가져올 수 있습니다.
list(my_dataframe.columns.values)
또한 (Ed Chum의 답변과 같이) 간단히 사용할 수 있습니다.
list(my_dataframe)
가장 퍼포먼스가 뛰어난 임베디드 메서드가 있습니다.
my_dataframe.columns.values.tolist()
.columns
Index
,.columns.values
하고 이 기능이 ..tolist
목록을 반환합니다.
가 그다지 하지 않다면, 성과는 중요하지 않다.Index
는 ""를 합니다..tolist()
"CHANGE: "CHANGE: "
my_dataframe.columns.tolist()
퍼포먼스의 차이는 명백합니다.
%timeit df.columns.tolist()
16.7 µs ± 317 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit df.columns.values.tolist()
1.24 µs ± 12.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
싫어하는 .list
df
다음과 같이 합니다.
list(df)
간단한 테스트를 몇 가지 해봤습니다.또한 놀랄 것도 없이 빌트인 버전은dataframe.columns.values.tolist()
장장빠빠빠빠다다
In [1]: %timeit [column for column in df]
1000 loops, best of 3: 81.6 µs per loop
In [2]: %timeit df.columns.values.tolist()
10000 loops, best of 3: 16.1 µs per loop
In [3]: %timeit list(df)
10000 loops, best of 3: 44.9 µs per loop
In [4]: % timeit list(df.columns.values)
10000 loops, best of 3: 38.4 µs per loop
도 (일본어)가 좋아요)list(dataframe)
그래도 고마워요.EdChum!
한층 더 심플해집니다(Panda 0.16.0).
df.columns.tolist()
열 이름을 좋은 목록으로 제공합니다.
개봉 ( 3. 확확개개 pypypypy 3.5+:[*df]
친구들 ★★★★★
Python 3.5에는 언팩 일반화(PEP 448)가 도입되어 있습니다.따라서 다음과 같은 작업이 모두 가능합니다.
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(5))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
「 」를 list
....
[*df]
# ['A', 'B', 'C']
「」를 사용하고 는, 「」를 선택해 주세요.set
,
{*df}
# {'A', 'B', 'C'}
「」를 사용하고 는, 「」를 선택해 주세요.tuple
,
*df, # Please note the trailing comma
# ('A', 'B', 'C')
또는 결과를 저장하려는 경우,
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
...커피를 타이핑으로 변환하는 타입이라면, 커피를 보다 효율적으로 소비할 수 있을 것입니다.
추신: 퍼포먼스가 중요한 경우 위의 솔루션을 포기하고
df.columns.to_numpy().tolist() # ['A', 'B', 'C']
이는 Ed Chum의 답변과 비슷하지만 v0.24에 대해 갱신되었습니다.
.to_numpy()
보다.values
자세한 내용은 이 답변을 참조하십시오.
비주얼 체크
다른 답변에서도 이 내용을 확인했으므로 반복적인 언팩을 사용할 수 있습니다(명시적인 루프가 필요 없음).
print(*df)
A B C
print(*df, sep='\n')
A
B
C
기타 방법에 대한 비판
인 '명시적'은하지 마십시오for
1줄로 실행할 수 있는 동작의 루프(리스트의 압축은 OK).
다음, 하다못해 쓰다, 하다못해 쓰다.sorted(df)
는 열의 원래 순서를 유지하지 않습니다.그러기 위해서는,list(df)
★★★★★★ 。
다음, 지만요.list(df.columns)
★★★★★★★★★★★★★★★★★」list(df.columns.values)
(v0.24)로 설정합니다. 다.Index
: (발신처)df.columns
어레이NumPy'에 의해 반환됨df.columns.values
를 정의합니다..tolist()
빠
즉 목록화, 목록화list(df)
확장 언팩을 사용할 수 없는 Python 3.4 또는 그 이전의 메서드에 대한 간결한 대안으로만 사용해야 합니다.
>>> list(my_dataframe)
['y', 'gdp', 'cap']
디버거 모드에서 데이터 프레임의 열을 나열하려면 목록 이해를 사용합니다.
>>> [c for c in my_dataframe]
['y', 'gdp', 'cap']
이렇게 은 런, 음, 음, 음, 음, 음, 음, 음, 음, by, by, by, by, by, by, by, by, by, by, by, by, by, by, by, by, by, by simply, simply, ,sorted
:
>>> sorted(my_dataframe)
['cap', 'gdp', 'y']
게 있다, 라고 할 수 요.my_dataframe.columns
.
df.columns.values.tolist()
df.columns.tolist()
을 사용법
In [97]: %timeit df.columns.values.tolist()
100000 loops, best of 3: 2.97 µs per loop
In [98]: %timeit df.columns.tolist()
10000 loops, best of 3: 9.67 µs per loop
DataFrame은 개체의 "키"에 대해 반복하는 dict와 같은 규칙을 따릅니다.
my_dataframe.keys()
. - 메서드 "/" - "/"입니다.to_list()
다음 중 하나:
my_dataframe.keys().to_list()
list(my_dataframe.keys())
DataFrame의 기본 반복은 열 레이블을 반환합니다.
[column for column in my_dataframe]
열 레이블을 얻기 위해 DataFrame을 목록으로 변환하지 마십시오.편리한 코드 샘플을 찾는 동안 생각을 멈추지 마세요.
xlarge = pd.DataFrame(np.arange(100000000).reshape(10000,10000))
list(xlarge) # Compute time and memory consumption depend on dataframe size - O(N)
list(xlarge.keys()) # Constant time operation - O(1)
노트북으로
IPython 노트북의 데이터 탐색을 위해 선호하는 방법은 다음과 같습니다.
sorted(df)
알파벳 순으로 정렬된 목록을 쉽게 만들 수 있습니다.
코드 저장소
암호로는 하는 것이 더 명확합니다.
df.columns
다른 사람이 당신의 코드를 읽으면 당신이 무엇을 하는지 알려주기 때문입니다.
%%timeit
final_df.columns.values.tolist()
948 ns ± 19.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit
list(final_df.columns)
14.2 µs ± 79.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit
list(final_df.columns.values)
1.88 µs ± 11.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit
final_df.columns.tolist()
12.3 µs ± 27.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit
list(final_df.head(1).columns)
163 µs ± 20.6 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
는 다음과 list(my_dataframe.columns)
★★★★★★★★★★★★★★★★★」my_dataframe.columns.tolist()
위의 복잡한 것은 필요 없습니다. : )
빠르고 깔끔한 시각적 확인을 위해 다음과 같이 하십시오.
for col in df.columns:
print col
Simeon Visser가 대답했듯이, 당신은 할 수 있다.
list(my_dataframe.columns.values)
또는
list(my_dataframe) # For less typing.
하지만 가장 좋은 점은
list(my_dataframe.columns)
그것은 명백하고 동시에 불필요하게 길지 않다.
나는 그 질문이 추가적인 설명을 할 가치가 있다고 생각한다.
fixxer가 지적한 바와 같이, 정답은 프로젝트에서 사용하는 Panda 버전에 따라 달라집니다.당신이 얻을 수 있는 것pd.__version__
명령어를 입력합니다.
만약 당신이 나 같은 이유라면 (Debian 8 (Jessie)에서)0.14.1)을 사용하여 0.16.0보다 오래된 버전의 Panda를 사용하므로 다음을 사용해야 합니다.
df.keys().tolist()
df.columns
아직 구현되지 않았습니다.
이 키 방식의 장점은 새로운 버전의 판다에서도 작동하기 때문에 더 보편적이라는 것입니다.
import pandas as pd
# create test dataframe
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(2))
list(df.columns)
돌아온다
['A', 'B', 'C']
n = []
for i in my_dataframe.columns:
n.append(i)
print n
아주 간단합니다.
다음과 같이 할 수 있습니다.
list(df.198)
DataFrame에 Index 또는 MultiIndex가 있고 이러한 인덱스를 열 이름으로 포함하려는 경우:
names = list(filter(None, df.index.names + df.columns.values.tolist()))
reset_index() 호출을 회피합니다.이러한 단순한 조작에 불필요한 퍼포먼스 히트가 발생합니다.
데이터 프레임 인덱스가 기본/고유 키로 매핑되는 데이터베이스의 데이터를 차단하기 때문에 이 작업이 더 자주 필요하게 되었습니다. 그러나 이 작업은 제게는 또 다른 "열"에 불과합니다.판다들이 이런 것을 위해 내장된 방법을 가지고 있는 것이 아마 말이 될 것이다(내가 그것을 놓쳤을 가능성이 매우 높다.
이것이 당신의 목표에 도달하는 가장 쉬운 방법입니다.
my_dataframe.values.values.토리스트()
Lazy인 경우는, 이것을 사용해 주세요.>
list(my_dataframe)
간단한 코드입니다.
for i in my_dataframe:
print(i)
그냥 해
이전에 제공한 솔루션도 좋지만, frame.column_names()도 판다의 함수가 될 것으로 기대하지만, 그렇지 않기 때문에 아래의 구문을 사용하는 것이 좋을지도 모릅니다."tlist" 함수를 frame.columns라고 부르면 판다를 제대로 사용하고 있다는 느낌을 살릴 수 있습니다.토리스트()
frame.columns.tolist()
listHeaders = [my_dataframe의 colName]
언급URL : https://stackoverflow.com/questions/19482970/get-a-list-from-pandas-dataframe-column-headers
'source' 카테고리의 다른 글
사용자가 다운로드 할 수 있는 메모리 내에 파일을 작성하는 방법(서버 경유는 아님) (0) | 2022.09.12 |
---|---|
같은 junit 테스트를 몇 번이고 실행할 수 있는 쉬운 방법? (0) | 2022.09.12 |
MySQL 쿼리 - 오늘에서 최근 30일 사이의 레코드 (0) | 2022.09.12 |
파라미터가 리터럴 null 값인 경우 오버로드된 메서드는 어떻게 선택됩니까? (0) | 2022.09.12 |
도커 볼륨 mariadb에 루트 권한이 있습니다. (0) | 2022.09.12 |