df의 특정 필드값 사용 방법?(어? 이게 왜 안돼죠?)
갑자기 막막해 지네요... 아직 초보지만, 데이터 프레임에서 필드와 index값으로 해당 값을 사용할 수 있었는데...
df: time, open, close, high, low 등의 필드로 구성
이때 보통 10번째 open값을 사용할땐df['open][9]
또는df.open[9]
이렇게 하면 해당 값을 추출할 수 있었던 걸로 알고 있구요..
여기서 특정시간에 맞는 행을 찾는데 까지는 어렵게 성공했음.
row = df.loc[df.time==time_x]
# ===> 이렇게 해서 조건에 맞는 행 하나를 찾음.
print(row) 이렇게 출력하면 아래와 같이 출력됩니다.
time open close ... buy_pr sell_pr macd_diff
990 1645803660000 39217.0 39301.565186 ... 39169.575 39744.302763 -17.795882
여기서 open 값인 39,217.0을 추출해서 계산 등에 사용하려 하는데, 잘 안되서 우선 출력해 보니
print(row.open)
995 39217.0
Name: open, dtype: float64
<class 'pandas.core.series.Series'>
이렇게 995 39217.0
로 나오는데, type을 출력해 보면 위와 같이 시리즈라고 나오고 있습니다..
이를 아무리row.open
, row.open[1]
, row['open'][1]
등으로 추출해 봐도
39217.0
만 추출이 안되고 인덱스 번호 995
랑 같이 나와서 계산 등에 사용할 수가 없습니다.
왜 그럴까요? 제가 뭐 잘못 알고 있는건가요?
열공중 님 470
M 2022년 2월 26일 1:01 오전
1개의 답변이 있습니다. 1 / 1 Page
여러번 시도하고 공부하다 보니 스스로 해결책을 찾았습니다.
원인은 row = df.loc[df.time==time_x]
로 매칭되는 값이 여러 개가 나올 수 있어서 그런것 같습니다
<매칭 결과 값>
>>> row = df.loc[df.time==time_x]
>>> print(row)
code date time open high low close
2 A322780 2022-02-16 1423 2845 2860 2840 2860
456 A322780 2022-02-21 1423 2920 2935 2920 2935
<특정 값 추출 방법>
open=row.open.iloc[0] 이렇게 iloc를 통해 접근해야 되네요..
>>> row = df.loc[df.time==time_x]
>>> open=row.open.iloc[0]
>>> print(open)
2845
이렇게 결과가 잘 나옵니다. ^^
열공중 님
M 2022년 3월 1일 11:36 오전