table 에서 NaN 으로 뜨는 값을 0으로 바꿀 수 있을까요?

조회수 435회

import pandas as pd

import requests

from bs4 import BeautifulSoup

from tabulate import tabulate

import time

url = "http://comp.fnguide.com/SVO2/ASP/SVD_Main.asp?pGB=1&gicode=A005390&cID=&MenuYn=Y&ReportGB=&NewMenuID=101&stkGb=701"

res = requests.get(url)

soup = BeautifulSoup(res.content, "lxml")

table = soup.find_all("table")

df = pd.read_html(str(table))

print(df[4])

ja = df[4].iloc[4, 2]

이 데이터프레임에서 NaN 으로 표시되는 값을 0이라는 정수값으로 불러오고 싶습니다. NaN이 정확하게 뭔지를 몰라서 어떻게 해야할지 모르겠네요. 답변해주시면 감사하겠습니다.~~

혹시나 하고 해당사이트에서 개발자모드에서 확인해 본걸로는 NaN에 해당하는 공백이

& nbsp;

(& 와 nbsp; 사이엔 실제로 공백이 없는데, 사이트대로 치면 글이 안쳐져서...)

로 나옵니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • pandas에서 데이터프레임 안의 모든 NaN 값을 0으로 바꾸고 싶으면 아래와 같이 하면 됩니다.

    df.fillna(0)
    

    아래 코드 참고하세요.

    • 코드
    import pandas as pd
    
    import requests
    
    from bs4 import BeautifulSoup
    
    url = "http://comp.fnguide.com/SVO2/ASP/SVD_Main.asp?pGB=1&gicode=A005390&cID=&MenuYn=Y&ReportGB=&NewMenuID=101&stkGb=701"
    
    res = requests.get(url)
    
    soup = BeautifulSoup(res.content, "lxml")
    
    table = soup.find_all("table")
    
    df = pd.read_html(str(table))
    
    print(df[4])
    
    for i in range(len(df)):
        df[i].fillna(0,inplace=True)
    
    print(df[4])
    

    -결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • AttributeError: 'list' object has no attribute 'fillna' 알 수 없는 사용자 2021.1.16 21:00
    • 써주신 대로 했는데 위와 같은 오류가 발생합니다... 알 수 없는 사용자 2021.1.16 21:01
    • 질문에서는 데이터프레임이라고 하셨는데, 오류 내용대로라면 데이터 프레임이 아니고 리스트인 것 같네요. 알 수 없는 사용자 2021.1.16 21:33
    • df.fillna(0)를 print(df[4])하기 바로 전에 사용하시것 맞나요? 혹시 그냥 첫줄에 쓴건 아닌가요? 알 수 없는 사용자 2021.1.16 21:35
    • 리스트를 데이터프레임으로 바꾸고 싶으면 예를 들어 x=pd.DataFrame(리스트) 하시면 데이터 프레임 x가 얻어지고요. 이렇게 얻어진 데이터프레임 x에서 NaN을 0으로 바꾸려면 x.fillna(0) 하시면 됩니다. 알 수 없는 사용자 2021.1.16 21:36
    • 리스트일지도 모른다고 하셔서 df_4 = pd.DataFrame(df[4]) df_4.fillna(0) 라고 해봤어요. 여기까지 하고 터미널에서 돌리면 문제가 없는데, 프린트 하면 여전히 NaN 값이 뜹니다.... 알 수 없는 사용자 2021.1.16 21:56
    • pd.read_html 함수가 데이터 프레임의 리스트를 반환하네요. 답변 본문에 소스 코드와 결과를 추가해서 넣었으니 확인해 보세요. 알 수 없는 사용자 2021.1.16 22:05
    • 정말 감사드립니다.~~~ 이거 관련된거 해결하느라 3일 걸렸거든요~~^^ 행복한 주말 되세요~~~ 알 수 없는 사용자 2021.1.16 22:14

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)