파이썬 DataFrame에서 특정 값 위치(행 or 열)와 특정 값 개수를 각 변수에 저장 하는 방법 이 있을까요??

조회수 559회

안녕하세요. 파이썬 dataframe 학습중인 파이썬 초보자입니다.

for i in range(len(df)) :
    if df1.loc[i, "idx1"]=="HELLO" :
        cnt1=cnt1+1
        num=i
        df2.loc[10, 'idx8'] = df.at[i,'IDX8']

이런 코드가 있긴 한데 for문으로 돌리니깐 "실행"시간이 생각보다 오래걸려서 for문을 안 써서 해보려고 하는데 어려움이 있어서요

num값과 cnt1 값을 for문 안 쓰고 값을 받고 싶은데 방법이 있을까요?

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    이런 걸 원하는 건가요?

    특정컬럼의 값이 "HELLO" 인 것만 뽑아서, 그 갯수와 위치를 알아내기.

    >>> import pandas as pd
    >>> df = pd.DataFrame({"idx1":["AELLO", "HELLO", "KELLO", "HELLO", "MELLO"]})
    >>> df
        idx1
    0  AELLO
    1  HELLO
    2  KELLO
    3  HELLO
    4  MELLO
    >>> df[df.idx1 == "HELLO"]
        idx1
    1  HELLO
    3  HELLO
    >>> len(df[df.idx1 == "HELLO"])
    2
    >>> df[df.idx1 == "HELLO"].index
    Int64Index([1, 3], dtype='int64')
    
    • 넵 맞습니다..! 감사합니다. len이랑 df.index를 사용하면 cnt 와 num을 for문 없이 가능했던 거네요. 이렇게 간단했던걸 왜 생각 못 했을까요. 다시 한번 감사드립니다. 물먹는하마 2021.9.8 14:10
    • @Chang : for 문으로 해결하려는 사고 프레임에서, 집합적으로 바라보는 사고 프레임으로 전환이 필요합니다. 개인적으로는 sql 의 기본적인 select 문을 좀 익히는게 도움이 되는 것 같습니다. ( select count, select group by, ... ) nowp 2021.9.8 15:12
    • 조언 감사드립니다. 저도 for문으로 안써보려고 고민은 해보긴 하는데 뭔가 아직은 좀 힘든거 같네요 ㅠㅠ 물먹는하마 2021.9.18 00:30

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)