2017-12-30 21 views
2

약 50 열 및> 100 행을 가진 팬더 데이터 프레임이 있습니다. 열 'col_x', 'col_y' ('col_z' < m)을 선택하고 싶습니다. 이 작업을 수행하는 간단한 방법이 있습니까? df[df['col3'] < m]df[['colx','coly']]과 유사하지만 결합 되었습니까?팬드는 행 조건에 따라 특정 열을 선택합니다.

+4

'df.loc [df [ "colz"]

+0

@ cᴏʟᴅsᴘᴇᴇᴅ 감사합니다! 나는 이런 식의 방법이 있지만 구문을 기억할 수 없다는 것을 알았습니다! 답변으로 게시하여 답변 해 주시면 감사하겠습니다. – Sockey

+1

[파이썬에서 .loc으로 선택] 가능한 중복 (https://stackoverflow.com/questions/44890713/selection-with-loc-in-python) – Maxim

답변

7

문제를 해결해 보겠습니다. 당신은 당신이 결과에서 컬럼의 서브 세트를 선택하려는 일부 부울 조건

  • 에 따라

    1. 필터 행에합니다.

    첫 번째 점의 경우, 당신이 필요로하는 것입니다 상태입니다 - 두 번째 요구 사항에 대한

    df["col_z"] < m 
    

    , 당신은 당신이 필요로하는 열 목록을 지정하려는 것 -

    ["col_x", "col_y"] 
    

    팬더로 예상되는 출력을 내기 위해이 두 가지를 결합하면 어떨까요? 첫 번째 인자는 행을 선택

    df.loc[df["col_z"] < m, ["col_x", "col_y"]] 
    

    , 두 번째 인수는 열을 선택 - 가장 간단한 방법은 loc를 사용한다. 선택투사 -


    더 관계 대수 연산의 관점에서 본의 loc

    생각해 소개. 만약 당신이 SQL 세계에서왔다면, 이것과 관련이있을 것이다. 위의 동작은, SQL 구문이 같을 것이다 -

    SELECT col_x, col_y  # projection on columns 
    FROM df 
    WHERE col_z < m   # selection on rows 
    

    pandas LOC 당신이 행을 선택하는 인덱스 라벨을 지정할 수 있습니다. 당신이 dataframe이있는 경우 예를 들어, -

    col_x col_y 
    a  1  4 
    b  2  5 
    c  3  6 
    

    col_x 인덱스 ac을 선택하고 당신이 사용하는 거라고 -

    df.loc[['a', 'c'], ['col_x']] 
    
        col_x 
    a  1 
    c  3 
    

    을 또는 부울 조건에 의해 선택하는 (시리즈를 사용하여 col_x 모든 값이 홀수 원래 질문 요청으로 bool 값/배열) -

    df.loc[(df.col_x % 2).ne(0), ['col_y']] 
    
        col_y 
    a  4 
    c  6 
    

    자세한 내용은 df.col_x % 22을 기준으로 각 값의 모듈러스를 계산합니다. ne(0)은 그 값을 0과 비교하고, 그렇지 않으면 True을 반환합니다 (이 경우 홀수를 선택합니다).여기에 그 표현이 결과 무엇 - 또한 읽기

    (df.col_x % 2).ne(0) 
    
    a  True 
    b False 
    c  True 
    Name: col_x, dtype: bool 
    

  • +1

    https://stackoverflow.com/questions/44890713/selection- with-loc-in-python도 비슷한 질문을합니다. 그리고 아마 튜토리얼을 참조 할 것입니다. 그래도 정교한 대답처럼! +1 –

    +0

    @AntonvBR 감사합니다. 나는 속는 사람으로 닫을 지 궁금해서 질문에 아주 잘 대답한다. –

    +0

    필자는 아마도 그것을 닫고 piRsquared 대답을 참조 할 것입니다. 그러나 당신은 당신의 대답이 받아 들여질 때까지 기다릴 수 있습니다. 사실 ... 더 생각하고있어. 나는 정말로 당신과 내가 도움을 줄 수있는 몇 안되는 다른 사람들이이 튜토리얼을 확장하는데 약간의 시간을 할애 할 수 있다고 생각한다. 이런 것들을 재사용하는 데 도움이 될 것입니다. –

    관련 문제