Python

[Jupyter Notebook] ValueError: Cannot set a DataFrame with multiple columns to the single column ma2

xojuholic 2022. 11. 28.
728x90
반응형

먼저 제목의 오류 발생하기 전 코드와 결과이다.

from pandas_datareader import data as pdr

import yfinance as yf
yf.pdr_override()

import numpy as np
import pandas as pd

import FinanceDataReader as fdr

df = fdr.DataReader('005930', '2018')

df = df[['Close']].copy()

df['ma1'] = df.rolling(3).mean().shift(1)

df

 

제목의 오류가 발생한 코드이다.

      1 from pandas_datareader import data as pdr
      2
      3 import yfinance as yf
      4 yf.pdr_override()
      5
      6 import numpy as np
      7 import pandas as pd
      8
      9 import FinanceDataReader as fdr
     10
     11 df = fdr.DataReader('005930', '2018')
     12
     13 df = df[['Close']].copy()
     14
     15 df['ma1'] = df.rolling(3).mean().shift(1)
---> 16 df['ma2'] = df.rolling(30).mean().shift(1)	# 오류 발생 부분
     17
     18 df

 

오류 메시지를 다시 한 번 보면,

ValueError: Cannot set a DataFrame with multiple columns to the single column ma2

 

와 같이 다중 컬럼을 가지고 단일 컬럼에 DataFrame 설정을 할 수 없다는 내용임을 알 수 있다. 즉, Close 컬럼과 ma1 컬럼에 대해  새로운 ma2 컬럼을 설정하려고 시도했기 때문이라는 의미이며 이 내용을 현재 수강하는 과정의 강사 알려주었다.

각설하고!!!

상기 내용을 반영하여 단일 컬럼을 기준으로 새로운 단일 컬럼을 설정하게끔 수정한 코드 및 결과는 아래와 같다.

      1 from pandas_datareader import data as pdr
      2
      3 import yfinance as yf
      4 yf.pdr_override()
      5
      6 import numpy as np
      7 import pandas as pd
      8
      9 import FinanceDataReader as fdr
     10
     11 df = fdr.DataReader('005930', '2018')
     12
     13 df = df[['Close']].copy()
     14
---> 15 df['ma1'] = df['Close'].rolling(3).mean().shift(1)	# 기존 코드 일부 수정
---> 16 df['ma2'] = df['Close'].rolling(30).mean().shift(1)	# 수정 코드 반영한 새로운 코드
     17
     18 df

 

728x90
반응형
SMALL

댓글

💲 추천 글