복붙노트

[PYTHON] Pandas DataFrame의 조건부 논리

PYTHON

Pandas DataFrame의 조건부 논리

Pandas DataFrame에 조건부 논리를 적용하는 방법

아래 표시된 DataFrame을 참조하십시오.

   data desired_output
0     1          False
1     2          False
2     3           True
3     4           True

내 원래 데이터가 '데이터'열에 표시되고 desired_output이 옆에 표시됩니다. 'data'의 숫자가 2.5보다 작 으면 desired_output은 False입니다.

나는 루프를 적용하고 DataFrame을 재구성 할 수 있습니다 ...하지만 그것은 '비 - 파이썬 적'

해결법

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

    1.그 값과 열을 비교하면됩니다.

    그 값과 열을 비교하면됩니다.

    In [9]: df = pandas.DataFrame([1,2,3,4], columns=["data"])
    
    In [10]: df
    Out[10]: 
       data
    0     1
    1     2
    2     3
    3     4
    
    In [11]: df["desired"] = df["data"] > 2.5
    In [11]: df
    Out[12]: 
       data desired
    0     1   False
    1     2   False
    2     3    True
    3     4    True
    
  2. ==============================

    2.

    In [1]: df
    Out[1]:
       data
    0     1
    1     2
    2     3
    3     4
    

    선택한 데이터 프레임 열을 기반으로 값을 조건부로 반환하는 함수를 적용하려고합니다.

    In [2]: df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false')
    Out[2]:
    0     true
    1     true
    2    false
    3    false
    Name: data
    

    그런 다음 반환 된 열을 데이터 프레임의 새 열에 할당 할 수 있습니다.

    In [3]: df['desired_output'] = df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false')
    
    In [4]: df
    Out[4]:
       data desired_output
    0     1           true
    1     2           true
    2     3          false
    3     4          false
    
  3. ==============================

    3.이 특정 예제에서는 DataFrame이 하나의 열만있는 경우 다음과 같이 우아하게 작성할 수 있습니다.

    이 특정 예제에서는 DataFrame이 하나의 열만있는 경우 다음과 같이 우아하게 작성할 수 있습니다.

    df['desired_output'] = df.le(2.5)
    

    le는 요소가 2.5 이하인지 여부를 테스트합니다. gt와 gt보다 작은 경우도 마찬가지입니다.

  4. ==============================

    4.

    In [34]: import pandas as pd
    
    In [35]: import numpy as np
    
    In [36]:  df = pd.DataFrame([1,2,3,4], columns=["data"])
    
    In [37]: df
    Out[37]: 
       data
    0     1
    1     2
    2     3
    3     4
    
    In [38]: df["desired_output"] = np.where(df["data"] <2.5, "False", "True")
    
    In [39]: df
    Out[39]: 
       data desired_output
    0     1          False
    1     2          False
    2     3           True
    3     4           True
    
  5. from https://stackoverflow.com/questions/14714181/conditional-logic-on-pandas-dataframe by cc-by-sa and MIT license