Pandas DataFrame의 for 루프 / if 문 문제

행크 고든

내 코드는 다음과 같습니다.

DataFrame 제공

df.head(3)

           1. open  2. high  3. low 4. close  5. volume
date                    
2021-02-18  241.80  243.93  240.86  243.79  16925563.0
2021-02-17  241.32  244.31  240.94  244.20  21451617.0
2021-02-16  245.03  246.13  242.92  243.70  26728487.0

"4.close"를 전날 "4.close"와 비교하는 새 열을 추가했습니다. 작동했습니다.

for i in df["4. close"]:
    df["changeAbsolute"] = df["4. close"] - df["4. close"].shift(-1)

df.head(3)

1. open     2. high     3. low  4. close    5. volume   changeAbsolute
date                        
2021-02-18  241.8000    243.93  240.86  243.79  16925563.0  -0.41
2021-02-17  241.3200    244.31  240.94  244.20  21451617.0  0.50
2021-02-16  245.0300    246.13  242.92  243.70  26728487.0  -1.29

이제 내 문제가 온다.

df [ "changeAbsolute"]가 양수이면 "+", 음수이면 "-", 0이면 "unch"를 표시하는 다른 열을 추가 할 때

for i in df["changeAbsolute"]:
    if i < 0:
        df["Change"] = "-"
    elif i > 0:
        df["Change"] = "+"
    else:
        df["Change"] = "unch"

df.head(3)

            1. open     2. high 3. low  4. close 5. volume  changeAbsolute      Change
date                            
2021-02-18  241.8000    243.93  240.86  243.79  16925563.0     -0.41             unch
2021-02-17  241.3200    244.31  240.94  244.20  21451617.0      0.50             unch
2021-02-16  245.0300    246.13  242.92  243.70  26728487.0     -1.29             unch

나는 기대했다 :

            1. open     2. high 3. low  4. close 5. volume  changeAbsolute      Change
date                            
2021-02-18  241.8000    243.93  240.86  243.79  16925563.0     -0.41             -
2021-02-17  241.3200    244.31  240.94  244.20  21451617.0      0.50             +
2021-02-16  245.0300    246.13  242.92  243.70  26728487.0     -1.29             -

if / elif / else 문에서 순서를 변경했습니다. 도움이되지 않았습니다. 나는 다른 것만 돌려 받았습니다. 누구든지 도울 수 있습니까?

Serge Ballesta

Pandas에서는 벡터화 라고하는 한 번에 전체 열을 처리 할 수 ​​있습니다 .

을 계산하려면 df['changeAbsolute']하나의 단일 작업이 필요합니다.

df["changeAbsolute"] = df["4. close"] - df["4. close"].shift(-1)

그런 다음 마지막 열에 사용할 수 있습니다 np.where.

df['Change'] = np.where(df.changeAbsolute > 0, '+', np.where(
    df.changeAbsolute < 0, '-', 'unch'))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사