복붙노트

[PYTHON] 팬더 데이터 프레임을 시리즈로 변환

PYTHON

팬더 데이터 프레임을 시리즈로 변환

나는 팬더에 다소 새로운 사람입니다. 1 열 23 열 팬더 데이터 프레임이 있습니다.

이것을 시리즈로 변환하고 싶습니까? 이 일을하는 가장 비범 한 방법이 무엇인지 궁금합니다.

나는 pd.Series (myResults)를 시도했지만 ValueError에 불만을 토로한다 : 크기가 23 인 시퀀스를 차원 1의 배열 축으로 복사 할 수 없다. 여전히 수학 용어로 "벡터"라는 것을 깨닫기에는 현명하지 못하다.

감사!

해결법

  1. ==============================

    1.차라리 차원의 차이를 인식하는 것이 현명하다고 말하십시오. :-)

    차라리 차원의 차이를 인식하는 것이 현명하다고 말하십시오. :-)

    여러분이 할 수있는 가장 간단한 방법은 iloc을 사용하여 위치에있는 행을 선택하는 것입니다.이 행은 새로운 인덱스로 열과 값으로 된 값이있는 Series를 제공합니다.

    >>> df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])
    >>> df
       a0  a1  a2  a3  a4
    0   0   1   2   3   4
    >>> df.iloc[0]
    a0    0
    a1    1
    a2    2
    a3    3
    a4    4
    Name: 0, dtype: int64
    >>> type(_)
    <class 'pandas.core.series.Series'>
    
  2. ==============================

    2.단일 행 데이터 프레임 (여전히 데이터 프레임을 생성 함)을 조 변경하고 결과를 시리즈 (to_frame의 역함수)로 압축 할 수 있습니다.

    단일 행 데이터 프레임 (여전히 데이터 프레임을 생성 함)을 조 변경하고 결과를 시리즈 (to_frame의 역함수)로 압축 할 수 있습니다.

    df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])
    
    >>> df.T.squeeze()
    a0    0
    a1    1
    a2    2
    a3    3
    a4    4
    Name: 0, dtype: int64
    

    참고 : @IanS가 제기 한 포인트를 수용하려면 OP 질문에 없더라도 데이터 프레임의 크기를 테스트하십시오. df가 데이터 프레임이라고 가정하고 있지만 가장자리의 경우 빈 데이터 프레임, 모양의 데이터 프레임 (1, 1) 및 둘 이상의 행이있는 데이터 프레임이 사용되는 경우 원하는 기능을 구현해야합니다.

    if df.empty:
        # Empty dataframe, so convert to empty Series.
        result = pd.Series()
    elif df.shape == (1, 1)
        # DataFrame with one value, so convert to series with appropriate index.
        result = pd.Series(df.iat[0, 0], index=df.columns)
    elif len(df) == 1:
        # Convert to series per OP's question.
        result = df.T.squeeze()
    else:
        # Dataframe with multiple rows.  Implement desired behavior.
        pass
    

    @themachinist가 제공 한 답변의 라인을 따라이 작업을 단순화 할 수도 있습니다.

    if len(df) > 1:
        # Dataframe with multiple rows.  Implement desired behavior.
        pass
    else:
        result = pd.Series() if df.empty else df.iloc[0, :]
    
  3. ==============================

    3.다음 두 가지 방법 중 하나를 사용하여 데이터 프레임을 분할하여 시리즈를 검색 할 수 있습니다.

    다음 두 가지 방법 중 하나를 사용하여 데이터 프레임을 분할하여 시리즈를 검색 할 수 있습니다.

    http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iloc.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(data=np.random.randn(1,8))
    
    series1=df.iloc[0,:]
    type(series1)
    pandas.core.series.Series
    
  4. from https://stackoverflow.com/questions/33246771/convert-pandas-data-frame-to-series by cc-by-sa and MIT license