pandas dataframe 에서 for 문 질문이요.

조회수 1233회

안녕하세요 오랜만에 질문 드리네요. 다름이 아니고 다음 그림에서 for문 안에 있는 식을 저렇게 말고 한번더 for문으로 돌릴 수 있을까여?

이중 for문안에서 for문으로 돌면서 새로운 변수들에 저장하고 싶은데 어떻게 할 수 있을까여 ? ![이미지][1]

ff = []
for i in range(len(score)):
    a = score["AMT_IND"][i]*score.iloc[i,5]
    b = score["AMT_IND"][i]*score.iloc[i,6]
    c = score["AMT_IND"][i]*score.iloc[i,7]
    d = score["AMT_IND"][i]*score.iloc[i,8]
    e = score["AMT_IND"][i]*score.iloc[i,9]
    f = score["AMT_IND"][i]*score.iloc[i,10]
    g = score["AMT_IND"][i]*score.iloc[i,11]
    h = score["AMT_IND"][i]*score.iloc[i,12]

    n = score["OPER_DT"][i]
    m = score["ADMD"][i]
    k = score["Day"][i]
    row = pd.DataFrame([n,m,a,b,c,d,e,f,g,h,k]).T
    row.columns = [ "OPER_DT", "ADMD", "LCLS_10_P", "LCLS_20_P", "LCLS_30_P", 
                    "LCLS_40_P", "LCLS_50_P", "LCLS_60_P", 
                    "LCLS_70_P", "LCLS_80_P", "DAY", ]
    ff.append(row)
  • 어휴~~ 일일이 받아쓰기 해야되는 스샷코드~~ 안돼요 안돼!! 엽토군 2020.9.1 20:59
  • 아 죄송합니다ㅠㅠ 다음에는 이런 부분 또한 신경쓰겠습니다 ! 감사합니다 ! 김현섭 2020.9.2 13:25

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    pandas dataframe 의 각 row 를 이런식으로 for 문으로 돌리면서 계산하면 성능 안나올 거에요.

    코드의 의도를 보면, score 데이터프레임의 "AMT_IND" 컬럼에 5번째부터 12번째 컬럼을 곱해서, 각각 "LCLS_10_P", ... 등의 컬럼을 만드는 게 핵심이잖아요.

    for 문이 전혀 필요 없죠.

    예를 들어서 5번째 컬럼 이름이 "AAA" 라고 하면, "LCLS_10_P" 컬럼 전체가 다음과 같이 한줄에 만들어져요.

    score["LCLS_10_P"] = score["AMT_IND"] * score["AAA"]
    

    이렇게 해서 "LCLS_XX_P" 컬럼들을 쭉 다 만들고 필요한 컬럼들만 추려서 쓰면 되겠죠. 컬럼명으로 사용하면 순서는 상관 없을거구요.

    • 아 저는 각 행으로만 뽑을 생각에 갇혔던거네요 ㅠㅠㅠ 생각의 전환이 된거 같습니다 ! 감사합니다 ! 김현섭 2020.9.2 13:26

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

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

(ಠ_ಠ)
(ಠ‿ಠ)