• 카테고리

    질문 & 답변
  • 세부 분야

    금융 · 재테크

  • 해결 여부

    해결됨

이런것도 가능한가요??

21.01.07 00:16 작성 조회수 135

0

안녕하세요.

수학적인 계산을 통한 칼럼을 만드는 것(강의에 나온 df[추가칼럼] = df[칼럼] - df[칼럼2])

& 와 | ,, and 와 or 를 사용하여 조건을 통한 bool 값을 넣는 것은 알겠는데, 

질문) 예를 들어서 요런 데이타프레임이 있으면 최초의 False 에서 True 딱 변환되는 저 순간의 인덱스만

추출하는 방법이 있을까요??

강의 듣고 오늘 계속 검색하고 방법을 찾아봤는데, 제 머리에선 방법을 못찾겠습니다,,ㅜㅜ

그렇다고 list로 만들어서 일일히 데이타를 비교를 일일히 하는것도  방법이 아닌거 같고,,, 어떤 방법이 있을까요?

                    조건값            조건값2

0           True                     False

1            True                     False

2            True                      True 

3            False                     False

4            False                     False

답변 7

·

답변을 작성해보세요.

1

df2 = df.shift(-1)     #  위쪽으로 shifting을 하나씩 한 새로운 데이터프레임을 만듭니다(중요: df2와 df의 index 는 서로 같습니다!)

cond1 = df['조건값'] >df['조건값2']            # current row가 [True False]이면서,

cond2 = df2['조건값'] < df2['조건값2']       # next row가 [False True]인 경우

df[cond1 & cond2] 로 하면 해결이 될 것 같습니다  (cond1과 cond2가 서로 다른 DataFrame에서 추출되었지만 이렇게 엮을 수 있는 이유는, 위에서 말한것처럼 index가 서로 같기 때문입니다! index alignment의 중요성은 제가 강의에서 충분히 언급한 것 기억하시죠? ㅎㅎ)

1

안녕하세요! 제가 잘 이해한게 맞다면 df[df['조건값2'] >  df['조건값1']] 로 가능할 것 같습니다. (True는 1이고 False는 0을 나타낸다는 파이썬 기초 수업에서 다루었습니다). 아니면 df[~df['조건값1'] & df['조건값2']] 로도 가능할 것 같네요 ㅎ

0

김정식님의 프로필

김정식

질문자

2021.01.08

옷!!! 안그래도 어제 검색하다보니깐  shift 라는 메소드가 있어서 하나씩 옮기면 되겠구나 하고

하나의 방법을 찾았다고 생각했었는데 역시 바로 답을 주시네요 !! 새로운 데이타프레임에 인덱스까진 생각안하고 있었는데

하나의 과정을 또 줄여주시네요! 감사합니다 !!  강의 잘 듣고 있습니다.

주말에 풀로 달리겠습니다 !! 다음 강의도 기다리겠습니다. 언능 준비해주세요 ! 

0

김정식님의 프로필

김정식

질문자

2021.01.07

아 지금 제가 예시로 적은 값은 보면

조건1과 조건2 의 값으로 True False 는 같은 값을 가지고 있는 row가 여러개 이지 않습니까?

제가 가지고 오고 싶은 값은 앞row의 값이 False True 였던게  True False 바뀔때의 첫번째 값들만 가져오고 싶은겁니다.

row 인덱스만 알면 그 row에 담긴 정보들을 가져오는건 배운대로 해도 충분할꺼 같아서 질문 드리지 않았습니다. 

 조건값                  조건값2

0            True                      False                     

1            True                      False                     

2            True                      False                 - 가져오고 싶은값   특징 아래 row의 값이 False True 였음

3            False                     True 

4            False                     True 

5            True                      False                     

6            True                      False                 - 가져오고 싶은값   특징 아래 row의 값이 False True 였음          

7            False                     True 

8            False                     True 

9            True                      False                 - 가져오고 싶은값    특징 아래 row의 값이 False True 였음     

10            False                     True 

11            False                     True 

0

질문이 조금 이해가 좀 어렵네요 ㅠ. 위에서 '가져오고 싶은 값'이라는게 바로 직전에서는 [True False] 이었다가 [False True]로 바뀌었을 때, 그 직전의 [True False]를 품고있는 row의 index를 가지고 오고 싶다는게 맞을까요?

0

김정식님의 프로필

김정식

질문자

2021.01.07

그룹바이 강의 이제 듣는데,,,제가 생각한 그대로 이야기가 나오네요,,,ㅋㅋ for문을 돌리기 시작한다는거 ,,,, ㅜㅜ

추가로 쥬피터랩에서 강의 영상엔 왼쪽에 목차처럼 나오는데 이건 어떻게 하는건가요? 제 주피터에는 안보입니다.

메뉴랑 뷰 세팅 다 살펴봣는데 못찾겠습니다,, 

0

김정식님의 프로필

김정식

질문자

2021.01.07

안녕하세요 답변감사합니다. 

df[df[df['조건값'] >df['조건값2']] 요렇게하면 인덱스 0,1,2 행을 가져올텐데,,,

제가 여기서 최초의 인덱스2번 만 사용할려고 하면 현재는

df.iloc[-1] 요렇게 하면 할수 있는데, 이런 방법 말고는 어떻게 할수 있을까요?

 조건값 칼럼데이타가 방대한 양이라고 하면 False가 되었다가 True가 되었다가 이렇게 반복적으로 왔다갔다 할텐데

바뀔때의 첫번째  True 들만 가져오고 싶은겁니다. 

              조건값                  조건값2

0            True                      False                     

1            True                      False                     

2            True                      False                      - 가져오고 싶은값

3            False                     True 

4            False                     True 

5            True                      False                     

6            True                      False                     - 가져오고 싶은값                  

7            False                     True 

8            False                     True 

9            True                      False                     - 가져오고 싶은값                  

10            False                     True 

11            False                     True