source

Panda DataFrame 열 머리글에서 목록 가져오기

goodcode 2022. 9. 12. 11:39
반응형

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()

.columnsIndex,.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)

싫어하는 .listdf다음과 같이 합니다.

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

기타 방법에 대한 비판

인 '명시적'은하지 마십시오for1줄로 실행할 수 있는 동작의 루프(리스트의 압축은 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

반응형