내 코드는 다음과 같습니다.
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 문에서 순서를 변경했습니다. 도움이되지 않았습니다. 나는 다른 것만 돌려 받았습니다. 누구든지 도울 수 있습니까?
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] 삭제
몇 마디 만하겠습니다