我需要将Wikipedia表刮到熊猫数据框并创建三列:PostalCode,自治市镇和邻里。
https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M
这是我使用的代码:
1.41135e-30
df = pd.DataFrame([]) df ['PostalCode','Borough','Neighborhood'] =邻居
df
它返回:
import requests
website_url = requests.get('https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M').text
from bs4 import BeautifulSoup
soup = BeautifulSoup(website_url,'lxml')
print(soup.prettify())
My_table = soup.find('table',{'class':'wikitable sortable'})
My_table
links = My_table.findAll('a')
links
Neighbourhood = [ ]
for link in links:
Neighbourhood.append(link.get('title'))
print (Neighbourhood)
import pandas as pd
0北约克 1帕克伍德 2北约克 3维多利亚村 4多伦多市中心 5海滨(多伦多) 多伦多市中心6 7摄政公园 北约克8号
我不知道如何从Wikipedia表中获取邮政编码和附近地区。
谢谢
答案 0 :(得分:1)
pandas允许您在一行代码中做到这一点:
df = pd.read_html('https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M')[0]
答案 1 :(得分:0)
提供错误消息。 通过查看它,首先您具有df ['Neighbourhoods]] = Neighbourhoods ,其中您的列表名称为 Neighborhoods 。
答案 2 :(得分:0)
您有两个小错误:
df = pd.dataframe()
应该是df = pd.DataFrame([])
您还第二次将Neighborhoods
拼错为Neighbourhoods
。
您可能还需要将soup = BeautifulSoup(website_url,'lxml')
更改为soup = BeautifulSoup(website_url,'xml')
,但是如果您不知道确切的错误消息,我们将为您提供更多帮助。
答案 3 :(得分:0)
代替使用
df = pd.dataframe()
df['Neighbourhoods'] = Neighbourhoods
您可以使用
df['Neighbourhoods'] = pd.Series(Neighbourhoods)
这可以解决您的错误,并使用pd.Series(listname)类似地添加新列,或者您可以使用此代码提供包含PostalCode,Borough和Neighborhoods的列表的列表。
df = pd.Dataframe(list_of_lists)
答案 4 :(得分:0)
看起来您只是在这里选择了其中一列:
links = My_table.findAll('a')
您应该寻找'tr'
而不是'a'
,因为这表示表中有新行。
然后您应该使用for循环填充列表列表,此代码应该起作用:
v = []
for tr in values:
td = tr.find_all('td')
row = [i.text for i in td]
v.append(row)
df = pd.DataFrame.from_records(v)