판다 .iloc에게 단일 행 데이터 프레임을 반환하도록 강요하는 것?
프로그래밍 목적으로, 나는..iloc
결과 데이터 프레임에 행이 하나만 있는 경우에도 데이터 프레임을 일관되게 반환합니다.어떻게 해야 하나요?
현재의,.iloc
결과에 행이 하나만 있는 경우 시리즈를 반환합니다.예:
In [1]: df = pd.DataFrame({'a':[1,2], 'b':[3,4]})
In [2]: df
Out[2]:
a b
0 1 3
1 2 4
In [3]: type(df.iloc[0, :])
Out[3]: pandas.core.series.Series
이 동작은 다음 두 가지 이유로 인해 불량합니다.
- 선택한 행 수에 따라
.iloc
시리즈 또는 데이터 프레임을 반환할 수 있으므로 코드에서 수동으로 확인해야 합니다.
-
.loc
반면에, 항상 데이터 프레임을 반환하고, 생성합니다. pandas
그 자체로 일관성이 없는. (댓글에 지적된 대로 정보를 제공합니다.)
R 사용자의 경우 이 작업은 다음을 통해 수행할 수 있습니다.drop = FALSE
또는 항상 기본적으로 데이터 프레임을 반환하는 tidyverse의 tible을 사용합니다.
이중 브래킷을 사용합니다.
df.iloc[[0]]
출력:
a b
0 1 3
print(type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
의 줄임말df.iloc[[0],:]
레이블별 행 액세스:loc
# Setup
df = pd.DataFrame({'X': [1, 2, 3], 'Y':[4, 5, 6]}, index=['a', 'b', 'c'])
df
X Y
a 1 4
b 2 5
c 3 6
열 대신 데이터 프레임을 가져오려면 길이가 1인 인덱스 목록을 전달합니다.
df.loc[['a']]
# Same as
df.loc[['a'], :] # selects all columns
X Y
a 1 4
특정 행을 여러 개 선택하려면
df.loc[['a', 'c']]
X Y
a 1 4
c 3 6
연속된 행 범위를 선택하려면 다음을 사용합니다.
df.loc['b':'c']
X Y
b 2 5
c 3 6
위치별 행 액세스:iloc
길이가 1인 인덱스 리스트를 지정합니다.
i = 1
df.iloc[[i]]
X Y
b 2 5
또는 길이 1의 조각을 지정합니다.
df.iloc[i:i+1]
X Y
b 2 5
여러 행 또는 연속 슬라이스를 선택하려면 다음과 유사한 구문을 사용합니다.loc
.
이중 괄호 방식이 항상 작동하는 것은 아닙니다(예: 조건을 사용하여 loc에서 타임스탬프가 지정된 행을 선택하는 경우).
그러나 다음을 추가할 수 있습니다.to_frame()
당신의 작전에.
>>> df = pd.DataFrame({'a':[1,2], 'b':[3,4]})
>>> df2 = df.iloc[0, :].to_frame().transpose()
>>> type(df2)
<class 'pandas.core.frame.DataFrame'>
다음 옵션을 사용하십시오.
df1 = df.iloc[[0],:]
#type(df1)
df1
또는
df1 = df.iloc[0:1,:]
#type(df1)
df1
Dataframe에서 단일 행 추출을 가져오려면 다음을 사용합니다.
df_name.iloc[index,:].to_frame().transpose()
single_Sample1=df.iloc[7:10]
single_Sample1
: https://i.stack.imgur.com/RHHDZ.png**strong 텍스트**
언급URL : https://stackoverflow.com/questions/45990001/forcing-pandas-iloc-to-return-a-single-row-dataframe
'programing' 카테고리의 다른 글
커서 기반 변수의 행 유형을 사용한 MariaDB 절차 (0) | 2023.08.14 |
---|---|
파워셸을 사용하여 SSL 바인딩을 제거하는 방법 (0) | 2023.08.14 |
"지정된 키 'utf8mb4'가 사전에 없습니다. (0) | 2023.08.14 |
Excel VBA의 컬렉션에 키가 있는지 확인하는 일반적인 방법 (0) | 2023.08.14 |
핀치를 감지하는 가장 간단한 방법 (0) | 2023.08.14 |