DataFrame의 인덱스 또는 열을 NumPy 배열 또는 파이썬 목록으로 얻는 방법을 알고 있습니까?
DataFrame의 인덱스 또는 열을 NumPy 배열 또는 파이썬 목록으로 얻는 방법을 알고 있습니까?
답변:
NumPy 배열을 얻으려면 다음 values
속성을 사용해야 합니다.
In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c']); df
A B
a 1 4
b 2 5
c 3 6
In [2]: df.index.values
Out[2]: array(['a', 'b', 'c'], dtype=object)
데이터가 이미 저장된 방식에 액세스하므로 변환 할 필요가 없습니다.
참고 :이 속성은 다른 많은 팬더 개체에도 사용할 수 있습니다.
In [3]: df['A'].values
Out[3]: Out[16]: array([1, 2, 3])
색인을 목록으로 가져 오려면 다음을 호출하십시오 tolist
.
In [4]: df.index.tolist()
Out[4]: ['a', 'b', 'c']
마찬가지로 열도 마찬가지입니다.
.values
되지 않습니다 .to_numpy()
. 확장 가능 데이터가 이미 저장된 방식에 액세스하므로 변환 할 필요가 없습니까?
당신은 사용할 수 있습니다 df.index
사용하여 목록에있는 값을 인덱스 오브젝트에 액세스하고 얻을 df.index.tolist()
. 마찬가지로 df['col'].tolist()
Series에도 사용할 수 있습니다 .
df.index.values.tolist()
df.index.tolist()
인스턴스 메소드를 반환하지 않습니다. 인덱스 목록을 반환합니다. 팬더 색인에 정의 된 메소드입니다. 값을 먼저 호출하는 것이 가능하지만 작업을 numpy로 위임하는 것은 수정이 아니라 대안 일뿐입니다.
.values
이 방법을 선호 하여 사용을 더 이상 사용하지 마십시오 !이후 v0.24.0에서, 우리는 두 브랜드 때리기 새로운 선호에서 NumPy와 배열을 얻기위한 방법이있을 것이다 Index
, Series
그리고 DataFrame
객체 : 그들은이다 to_numpy()
,하고 .array
. 사용법과 관련하여 문서에는 다음이 언급됩니다.
우리는 제거되거나 사용되지 않았다
Series.values
거나DataFrame.values
,하지만 우리는 매우 좋습니다 사용.array
또는.to_numpy()
대신.
자세한 정보 는 v0.24.0 릴리스 정보의이 섹션 을 참조하십시오.
df.index.to_numpy()
# array(['a', 'b'], dtype=object)
df['A'].to_numpy()
# array([1, 4])
기본적으로보기가 리턴됩니다. 수정하면 원본에 영향을 미칩니다.
v = df.index.to_numpy()
v[0] = -1
df
A B
-1 1 2
b 4 5
대신 사본이 필요하면 to_numpy(copy=True
);
v = df.index.to_numpy(copy=True)
v[-1] = -123
df
A B
a 1 2
b 4 5
이 함수는 DataFrame 에도 작동합니다 ( .array
그렇지 않지만).
array
특성
이 특성은ExtensionArray
인덱스 / 시리즈를 지원하는개체를반환합니다.
pd.__version__
# '0.24.0rc1'
# Setup.
df = pd.DataFrame([[1, 2], [4, 5]], columns=['A', 'B'], index=['a', 'b'])
df
A B
a 1 2
b 4 5
df.index.array
# <PandasArray>
# ['a', 'b']
# Length: 2, dtype: object
df['A'].array
# <PandasArray>
# [1, 4]
# Length: 2, dtype: int64
여기에서 다음을 사용하여 목록을 얻을 수 있습니다 list
.
list(df.index.array)
# ['a', 'b']
list(df['A'].array)
# [1, 4]
또는 직접 전화 .tolist()
:
df.index.tolist()
# ['a', 'b']
df['A'].tolist()
# [1, 4]
반환되는 내용과 관련하여 문서에서 언급 한 내용은
들어
Series
와Index
일반 NumPy와 배열에 의해 뒷받침 ES,Series.array
새로운를 반환합니다arrays.PandasArray
주위에 얇은 (노 복사)의 래퍼 인numpy.ndarray
.arrays.PandasArray
특별히 그다지 유용하지는 않지만 팬더 또는 타사 라이브러리에 정의 된 확장 배열과 동일한 인터페이스를 제공합니다.
그래서, 요약하면, .array
하나 돌아갑니다
ExtensionArray
인덱스 / 시리즈 의 기존 백업 또는ExtensionArray
기본 배열 위에 얇은 래퍼로 새 객체가 생성됩니다.두 가지 새로운 방법 추가의 이론적 근거이
기능은 두 개의 GitHub 이슈 GH19954 및 GH23623 에서 논의 된 결과로 추가되었습니다 .
특히 문서는 이론적 근거를 언급합니다.
[...]
.values
반환 값이 실제 배열인지, 일부 변환인지, pandas 사용자 정의 배열 (예 :)인지 확실하지 않습니다Categorical
. 예를 들어 withPeriodIndex
를.values
사용하면ndarray
매번 새로운 기간 객체가 생성 됩니다. [...]
이 두 기능은 올바른 방향으로의 주요 단계 인 API의 일관성을 향상시키는 것을 목표로합니다.
마지막으로 .values
현재 버전에서는 더 이상 사용되지 않지만 향후 어느 시점에서 이러한 상황이 발생할 수 있으므로 가능한 한 빨리 최신 API로 사용자를 마이그레이션하도록 촉구합니다.
pandas v0.13부터 다음을 사용할 수도 있습니다 get_values
.
df.index.get_values()
get_values
그냥 전화하십시오 .values
. 입력 할 문자가 더 많습니다.
아래는 데이터 프레임 열을 numpy 배열로 변환하는 간단한 방법입니다.
df = pd.DataFrame(somedict)
ytrain = df['label']
ytrain_numpy = np.array([x for x in ytrain['label']])
ytrain_numpy는 numpy 배열입니다.
나는 함께 노력했다 to.numpy()
그러나 그것은 나에게 아래의 오류 준 :
(DTYPE ( 'O')) : 형식 오류 : 유형에 지원되는 변환을 선형 SVC를 사용하여 바이너리 관련성의 분류 일을하는 동안. to.numpy ()는 dataFrame을 numpy 배열로 변환했지만 내부 요소의 데이터 유형이 위의 오류로 인해 나열되었습니다.
to_numpy
아닙니다.