簡體   English   中英

Python 將數據添加到空 pd.Dataframe

[英]Python add data to an empty pd.Dataframe

我對 python 很陌生,我想做的是從網站獲取數據並將網頁的一部分添加到 pandas dataframe。

這是我已經得到的代碼,但是在將數據添加到 Dataframe 時出現錯誤。

我得到的代碼:

url = 'https://oldschool.runescape.wiki/w/Module:Exchange/Anglerfish/Data'
r = requests.get(url)

soup = BeautifulSoup(r.content, 'html.parser')

price_data = soup.find_all('span', class_='s1')
df = pd.DataFrame()

for data in price_data:
  a = pd.DataFrame(data.text.split(":")[0],data.text.split(":")[1])
  df.append(a)

print(df)

我得到的錯誤:

ValueError                                Traceback (most recent call last)
<ipython-input-33-963d51917cf2> in <module>()
 10 
 11 for data in price_data:
---> 12   a = pd.DataFrame(data.text.split(":")[0],data.text.split(":")[1])
 13   df.append(a)
 14 

/usr/local/lib/python3.6/dist-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
507                 )
508             else:
--> 509                 raise ValueError("DataFrame constructor not properly called!")
510 
511         NDFrame.__init__(self, mgr, fastpath=True)

ValueError: DataFrame constructor not properly called!

您從data.text.split(":")[0],data.text.split(":")[1]獲得的數據結構似乎不符合 function pd.DataFrame()的預期. 首先查看 function 的文檔,以充分了解預期內容以及如何正確地將數據傳遞給它。 您可以傳遞包含列名和值的字典(數組必須等長,或者應指定索引),或者YOBEN_S建議的列表/數組,例如:

a = pd.DataFrame({'Column_1':data.text.split(":")[0],'Column_2':data.text.split(":")[1]})

由於您正在處理html數據,因此您應該嘗試使用pandas.read_html()的不同方法,可以在此處閱讀以獲取更多信息

通過以下方式修復您的代碼

pd.DataFrame([[data.text.split(":")[0],data.text.split(":")[1]]])

我做了一些更多的研究,對我來說最好的方法是:

#get data from marketwatch

url = 'https://oldschool.runescape.wiki/w/Module:Exchange/Anglerfish/Data'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
price_data = soup.find_all('span', class_='s1')
df = pd.DataFrame(columns=['timestamp', 'price'])

for data in price_data:
  df = df.append({'timestamp': data.text.split(":")[0], 'price': data.text.split(":")[1]}, ignore_index=True)

print(df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM