복붙노트

[PYTHON] dtype으로 팬더 열 선택

PYTHON

dtype으로 팬더 열 선택

Pandas DataFrames에서 데이터 유형 (dtype)별로 열을 선택하기위한 우아하고 간단한 방법이 있는지 궁금합니다. 즉, DataFrame에서 int64 열만 선택하십시오.

정교하게하기 위해,

df.select_columns(dtype=float64)

도움말에 미리 감사드립니다.

해결법

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

    1.

    df.loc[:, df.dtypes == np.float64]
    
  2. ==============================

    2.0.14.1부터 select_dtypes 메소드가 있으므로 좀 더 우아하게 / 일반적으로 할 수 있습니다.

    0.14.1부터 select_dtypes 메소드가 있으므로 좀 더 우아하게 / 일반적으로 할 수 있습니다.

    In [11]: df = pd.DataFrame([[1, 2.2, 'three']], columns=['A', 'B', 'C'])
    
    In [12]: df.select_dtypes(include=['int'])
    Out[12]:
       A
    0  1
    
    In [13]: df.select_dtypes(include=[np.number])
    Out[13]:
       A    B
    0  1  2.2
    
    In [14]: df.select_dtypes(exclude=[object])
    Out[14]:
       A    B
    0  1  2.2
    
  3. ==============================

    3.

    df.select_dtypes(include=[np.float64])
    
  4. ==============================

    4.모든 부동 dtypes 또는 모든 정수 dtypes 선택 옵션을 추가하여 기존 대답을 확장하고 싶습니다.

    모든 부동 dtypes 또는 모든 정수 dtypes 선택 옵션을 추가하여 기존 대답을 확장하고 싶습니다.

    데모:

    np.random.seed(1234)
    
    df = pd.DataFrame({
            'a':np.random.rand(3), 
            'b':np.random.rand(3).astype('float32'), 
            'c':np.random.randint(10,size=(3)).astype('int16'),
            'd':np.arange(3).astype('int32'), 
            'e':np.random.randint(10**7,size=(3)).astype('int64'),
            'f':np.random.choice([True, False], 3),
            'g':pd.date_range('2000-01-01', periods=3)
         })
    

    수율 :

    In [2]: df
    Out[2]:
              a         b  c  d        e      f          g
    0  0.191519  0.785359  6  0  7578569  False 2000-01-01
    1  0.622109  0.779976  8  1  7981439   True 2000-01-02
    2  0.437728  0.272593  0  2  2558462   True 2000-01-03
    
    In [3]: df.dtypes
    Out[3]:
    a           float64
    b           float32
    c             int16
    d             int32
    e             int64
    f              bool
    g    datetime64[ns]
    dtype: object
    

    모든 부동 숫자 열 선택 :

    In [4]: df.select_dtypes(include=['floating'])
    Out[4]:
              a         b
    0  0.191519  0.785359
    1  0.622109  0.779976
    2  0.437728  0.272593
    
    In [5]: df.select_dtypes(include=['floating']).dtypes
    Out[5]:
    a    float64
    b    float32
    dtype: object
    

    모든 정수 열 선택 :

    In [6]: df.select_dtypes(include=['integer'])
    Out[6]:
       c  d        e
    0  6  0  7578569
    1  8  1  7981439
    2  0  2  2558462
    
    In [7]: df.select_dtypes(include=['integer']).dtypes
    Out[7]:
    c    int16
    d    int32
    e    int64
    dtype: object
    

    모든 숫자 열 선택 :

    In [8]: df.select_dtypes(include=['number'])
    Out[8]:
              a         b  c  d        e
    0  0.191519  0.785359  6  0  7578569
    1  0.622109  0.779976  8  1  7981439
    2  0.437728  0.272593  0  2  2558462
    
    In [9]: df.select_dtypes(include=['number']).dtypes
    Out[9]:
    a    float64
    b    float32
    c      int16
    d      int32
    e      int64
    dtype: object
    
  5. from https://stackoverflow.com/questions/21271581/selecting-pandas-columns-by-dtype by cc-by-sa and MIT license