파이썬에서 상황에따라 변화하는 값에 대하여 질문합니다!

조회수 848회

내용이 다소 복잡하여 설명이 난잡할 수 있으나 양해해주시면 감사하겠습니다

제가 여쭈어보고자 하는 '상황에 따라 변화하는 값'이라 함은

예를들어서

x y z가 있고

x' y' z' 이 있다고 가정하였을때 6가지 경우의 수가 나올 수 있는 경우를 생각합니다 (3!)

x = x' y=y' z=z' 일때 값이 1

x=x' y=z' z=y' 일때 값이 2

x=y' y=x' z=z' 일때 값이 3

x=y' y=z' z=x' 일때 값이 4

x=z' y=x' z=y' 일때 값이 5

x=z' y=y' z=x' 일때 값이 6

이런식으로 상황에 따라 변화하는 값을 설정하는 방법이 있을까요?

경우의 수가 적을 경우에는 if문으로 작성이 가능하지만

변수가 6개만 넘어가도 720가지의 경우가 나와서 일일이 if문을 작성하지 못하다보니

각각의 상황이 변화하면서 생기는 값에 대한 해결책을 알고싶습니다.

현재 주어진 자료는

표 형태로 구성이 되어있습니다

                                    x          y        z

                          x         10       20        30

                          y         40       50        60

                          z         70      80         90   

이런 형태로 구성이되어 있는데요

이 상황에서 x y끼리 자리가 바뀔때마다 값도 마치 좌표형식으로 바꾸어 사용할 수 있는

방법이 있는지 궁금합니다.

(ex, (x, y, z)가 (y,x,z)로 바뀔때는 값이

                                    y        x        z

                          y        50        40        60

                          x         20       10        30

                          z         80       70        90 

이런식으로 생성이 되겠죠? 이 값들을 list로 정리 할 수 있을까요??

너무 복잡하고 난해한 질문드려 죄송합니다

  • 복잡하고 난해한 것이 문제가 아니라 공부가 필요해보입니다. 행렬 및 벡터는 numpy의 array 로 하면 됩니다. 데이터를 편하게 조작하는 것이 핵심이라면 pandas 의 dataframe을 이용하는 것도 쉬운 방법입니다. 정영훈 2017.9.13 21:49

1 답변

  • 늦은 답변이라 보실지는 모르겠지만.. 요즘 pandas 잘 쓰는 중이라 답변 달아봅니다.

    정영훈님 답변대로 위 문제 같은 경우 pandas를 쓰면 정말 쉽습니다.

    import pandas as pd
    
    raw_data = {'x': [10, 40, 70],
                'y': [20, 50, 80],
                'z': [30, 60, 90]}
    cur_xy = ['x', 'y', 'z']
    df = pd.DataFrame(raw_data, index=cur_xy, columns=cur_xy)
    print('주어진 자료\n', df)
    
    new_xy = ['y', 'x', 'z']
    df = df.reindex(new_xy, columns=new_xy)
    print('\n변경한 자료\n', df)
    

    참 쉽죠?

    ** 해시코드 코드 실행기에서 pandas 인식이 안되어 코드 실행기로 실행은 안되네요. Python 3로 설정하니 되네요 --; 제가 돌려본 결과 올려드립니다.

    주어진 자료
         x   y   z
    x  10  20  30
    y  40  50  60
    z  70  80  90
    
    변경한 자료
         y   x   z
    y  50  40  60
    x  20  10  30
    z  80  70  90
    
    • 요기(https://chrisalbon.com/) 가셔서 "Data Wrangling" 모아놓은곳 찾아보시면 다양한 pandas 예제를 보실수 있습니다. pandas 홈페이지는 매뉴얼식이라 좀 딱딱하네요. 먹는거야? 2018.12.7 14:22

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

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

(ಠ_ಠ)
(ಠ‿ಠ)