팬더 시리즈 또는 인덱스를 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']
마찬가지로 열도 마찬가지입니다.
당신은 사용할 수 있습니다 df.index
사용하여 목록에있는 값을 인덱스 오브젝트에 액세스하고 얻을 df.index.tolist()
. 마찬가지로 df['col'].tolist()
Series에도 사용할 수 있습니다 .
다중 색인 데이터 프레임을 다루는 경우 다중 색인의 한 이름 열만 추출하는 것이 좋습니다. 당신은 이것을 할 수 있습니다
df.index.get_level_values('name_sub_index')
물론 name_sub_index
의 요소해야합니다FrozenList
df.index.names
2019 년 v0.24.0 + 현재 .
.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
인덱스 / 시리즈 의 기존 백업 또는- 시리즈를 지원하는 NumPy 배열이있는 경우
ExtensionArray
기본 배열 위에 얇은 래퍼로 새 객체가 생성됩니다.
두 가지 새로운 방법 추가의 이론적 근거이
기능은 두 가지 GitHub 이슈 GH19954 및 GH23623 에서 논의 된 결과로 추가되었습니다 .
특히 문서는 이론적 근거를 언급합니다.
[...]
.values
반환 값이 실제 배열인지, 일부 변환인지, pandas 사용자 정의 배열 중 하나 (예 :)인지 확실하지 않았습니다Categorical
. 예를 들어 withPeriodIndex
를.values
사용하면ndarray
매번 새로운 기간 객체가 생성 됩니다. [...]
이 두 기능은 올바른 방향으로의 주요 단계 인 API의 일관성을 향상시키는 것을 목표로합니다.
마지막으로 .values
현재 버전에서는 더 이상 사용되지 않지만 향후 어느 시점에서 이러한 상황이 발생할 수 있으므로 가능한 한 빨리 새로운 API로 사용자를 마이그레이션하도록 권장합니다.
pandas v0.13부터 다음을 사용할 수도 있습니다 get_values
.
df.index.get_values()
팬더 dataframe
를 로 변환 list
한 다음 기본을 사용했습니다 list.index()
. 이 같은:
dd = list(zone[0]) #Where zone[0] is some specific column of the table
idx = dd.index(filename[i])
값을로 색인화했습니다 idx
.
다음은 데이터 프레임 열을 numpy 배열로 변환하는 간단한 방법입니다.
df = pd.DataFrame(somedict)
ytrain = df['label']
ytrain_numpy = np.array([x for x in ytrain['label']])
ytrain_numpy는 numpy 배열입니다.
나는 시도 to.numpy()
했지만 아래 오류가 발생했습니다 : TypeError : 선형 SVC를 사용하여 이진 관련성 분류를 수행하는 동안 유형에 대한 지원되지 않는 변환 : (dtype ( 'O')) . to.numpy ()는 dataFrame을 numpy 배열로 변환했지만 내부 요소의 데이터 유형이 위의 오류로 인해 나열되었습니다.
'IT story' 카테고리의 다른 글
Mac OS X의 파일에서 "확장 된 속성"을 제거하려면 어떻게합니까? (0) | 2020.04.07 |
---|---|
파일 잠금을 확인하는 방법? (0) | 2020.04.07 |
“Gradle 버전 2.10이 필요합니다.” (0) | 2020.04.06 |
jQuery에 특정 ID의 div가 있는지 확인하는 방법은 무엇입니까? (0) | 2020.04.06 |
Python에서 문자열과 다른 유형의 항목 목록에 참여 (0) | 2020.04.06 |