programing

판다 .iloc에게 단일 행 데이터 프레임을 반환하도록 강요하는 것?

muds 2023. 8. 14. 23:09
반응형

판다 .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

반응형