코드를 일반화 시키고 싶습니다~

조회수 1428회

제가 가지고 있는 DB를 Pandas로 읽어 온 결과입니다.

bound = pd.read_csv('bound.csv')
bound

이미지

저는 (10, 10) 짜리 데이터를 하나의 colume, 즉 (100, 1)의 자료로 만들고자 합니다.

new_bound = pd.concat([bound.Col1, bound.Col2, bound.Col3, bound.Col4, bound.Col5, bound.Col6, bound.Col7, bound.Col8, bound.Col9, bound.Col10], ignore_index=True, axis=0)

이렇게 코딩을 해서 하나의 컬럼으로 만들긴 했는데....

제가 실제로 다뤄야 하는 DB는 (640, 350) 짜리의 엄청 큰 자료거든요... ㅠㅠ

그래서 일반화를 시키고자 아래와 같이 for문으로 만들고 싶습니다.

bound = pd.read_csv('bound.csv')
row, col = bound.shape

new_bound = bound.Col1
for i in range(2, row+1):
    new_bound = new_bound.append(bound.Coli)

append(bound.Coli) 이 부분에서 i가 계속 바뀌도록 하고 싶은데...

어떻게 해야 할까요 ㅠㅠ 도와주세요 ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 아래의 행렬이 있습니다.

    a,b,c,d,e
    1,2,3,4,5
    1,2,3,4,5
    1,2,3,4,5
    

    이것의 전치행렬을 구하면

       0  1  2
    a  1  1  1
    b  2  2  2
    c  3  3  3
    d  4  4  4
    e  5  5  5
    

    이렇게 됩니다.

    이렇게 구한 전치행렬에서 행의 값을 차례로 추려주면

    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
    

    같이 얻을 수 있습니다,

    import pandas as pd
    
    bound = pd.read_csv('sample.csv')
    bound_transpose = bound.transpose()
    
    print(bound_transpose)
    print([item for row in bound_transpose.get_values() for item in row])
    
       0  1  2
    a  1  1  1
    b  2  2  2
    c  3  3  3
    d  4  4  4
    e  5  5  5
    [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
    
    • 너무 감사합니다 ㅠㅠ 이제 막 파이썬 공부를 시작해서 모르는 게 참 많네요~ 새해 복 많이 받으세요! 알 수 없는 사용자 2018.1.1 15:42

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

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

(ಠ_ಠ)
(ಠ‿ಠ)