python 이름에 번호가 붙은 변수 for문 에서 사용하는 법.

조회수 2746회

안녕하세요 쥬피터 노트북으로 파이썬 실행하고있는데

변수에 대한 for 문을 어떻게 작성해야할지 잘 몰라서 질문드립니다.

변수는 Year1부터 Year10까지 있는 상태입니다.

# Year1 형변환
    index = 1

    while(index<=57):

        colname = Year1.columns[index]

        col = getattr(Year1, colname)

        Year1[colname] = col.astype(float)

        index+=1

    col = getattr(Year1, 'Y')

    Year1['Y'] = col.astype(int)

# Year2 형변환
    index = 1

    while(index<=57):

        colname = Year2.columns[index]

        col = getattr(Year2, colname)

        Year2[colname] = col.astype(float)

        index+=1

    col = getattr(Year2, 'Y')

    Year2['Y'] = col.astype(int)

이런식으로 Year 뒤에있는 숫자만 바꾸는 for문을 어떻게 작성해야할까요??

도와주시면 정말 감사드리겠습니다!!

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    for YearN in [Year1, Year2, Year3, Year4]:
        # 반복되는 코드
    
    

    리스트에 바꾸는 변수들을 집어놓고 하나씩 꺼내서 반복되는 코드를 루프안에서 작성하시면 될 듯 합니다.

    코드를 보니까 수치값들이 텍스트로 읽혀서 수치로 바꾸려는 것 같네요. 너~무 복잡하게 하고 있어요.

    데이터 프레임에 전체에 대해서 astype(float) 을 해도 됩니다. 아니면 to_numeric 을 쓰는 게 더 좋아보이기도 합니다.

    • 추가질문 : for YearN in [Year1, Year2]: YearN = YearN.drop('col', 1) 로 실행해 봤는데, 변경이 되지 않는다.
    • 답변 : for YearN in [ Year1, Year2] : YearN.drop('col', axis=1, inplace=True) 처럼 inplace=True로 실행해 보세요. YearN 이 루프안에서만 유효한 변수이기 때문에 위와 같은 방법으로 안되는 것 같습니다.
    • for YearN in [Year1, Year2, Year3, Year4, Year5]: YearN = YearN.drop(['X11','X22','X23','X54','X55','X56','X57'],1) BONAE 2019.6.15 11:27
    • 말해주신대로 이런식으로 작성했는데 head를 찍어봐도 X11부터 X57까지 남아있습니다 ㅠㅠ 이유가 뭘까요?? BONAE 2019.6.15 11:29

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

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

(ಠ_ಠ)
(ಠ‿ಠ)