Ten kod dotyczy skrobania stron internetowych. Problem polega na tym, że gdy uruchamiam ten kod, pojawia się błąd „ValueError: długość przekazywanych wartości wynosi 6, indeks implikuje 7”. Jak mogę naprawić ten błąd. wartości langth to, ale długość indeksu to 7, dlatego pojawia się błąd.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url="https://en.wikipedia.org/wiki/List_of_Game_of_Thrones_episodes"
page=requests.get(url)
soup=BeautifulSoup(page.text,'html.parser')
table=soup.find('table',{'class':'wikitable plainrowheaders wikiepisodetable'}).tbody
rows=table.find_all('tr')
columns=[v.text.replace('\u200a[20]','') for v in rows[0].find_all('th')]
df=pd.DataFrame(columns=columns)
for record in range(1,len(rows)):
tds=rows[record].find_all('td')
if len(tds)==4:
values=[tds[0].text,tds[1].text,tds[2].text,tds[3].text]
else:
values=[td.text for td in tds]
df=df.append(pd.Series(values,index=columns),ignore_index=True)
print(df)
Zając to błąd w linii numer 25, błąd podano poniżej.
File "good.py", line 25, in <module>
df=df.append(pd.Series(values,index=columns),ignore_index=True)
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\series.py", line 300, in __init__
raise ValueError(
ValueError: Length of passed values is 6, index implies 7```
how can i solve this problem:::::
1 odpowiedź
Przeszukałem szybko Google i znalazłem to. Wygląda na to, że próbujesz odwołać się do pustej ramki danych.
Nie pracowałem z Numpy i dlatego nie wiem, co to jest dataframe i co ma robić, ale poszedłem i spojrzałem na Twój kod i wygląda na to, że pd.Series(values,index=columns)
oczekuje długości {{X1} } i columns
są równe.
Sprawdziłem twój kod i zobaczyłem, że długości nie są takie same. Długość values
to 6, podczas gdy długość columns
to 7. Stąd błąd.
Sprawdź REPL TUTAJ. Wstawiłem kilka instrukcji print, włączam je i sprawdzam wartości. Dodałem również sprawdzenie, czy długość pasuje, czy nie ... kiedy to dodałem, wygląda na to, że twój kod przeszedł dobrze.
Może nie jest to odpowiedź, której szukasz, ale dopóki ktoś nie odpowie, sugeruję, abyś zajrzał do swoich values
i columns
Podobne pytania
Powiązane pytania
Nowe pytania
python-3.x
W przypadku pytań dotyczących programowania w języku Python, które są specyficzne dla wersji 3+ tego języka. Użyj bardziej ogólnego tagu [python] we wszystkich pytaniach Pythona i dodaj ten tylko, jeśli twoje pytanie dotyczy wersji. Użyj znaczników [python-2.x] w pytaniach o Python 2.