我抓了一个名单和日期列表。我可以将数据转换为unicode LIST, 然后我几乎遇到了其他一切问题。
我的汤对象的示例输出:
LAST,FIRST,ID,DEBUT
Aardsma,David,aardd001,04/06/2004
Aaron,Hank,aaroh101,04/13/1954
Aaron,Tommie,aarot101,04/10/1962
首先,我想删除第一行:' LAST,FIRST,ID,DEBUT'但pop(0)不能在unicode列表中使用。
接下来我想将名称等解析为4列并将其放入pandas数据帧中。
这是我最新的代码,需要做很多工作:
import urllib2
import csv
import pandas as pd
from bs4 import BeautifulSoup
Cols=['Last','First','ID','Debut']
sock= urllib2.urlopen('http://www.retrosheet.org/retroID.htm')
link=sock.read()
soup = BeautifulSoup(link,'lxml')
list=soup.find_all('pre')
for td in list:
IDList=td.get_text()
df=pd.DataFrame(IDList,columns=Cols) # giving error so far
print(df)
#IDList=IDList.split(",")
答案 0 :(得分:1)
您的数据已经过csv格式化,所以您需要做的就是转储到StringIO中并让pandas读取它。
我没有让python3验证并且StringIO在python 2和python 3之间发生了变化 - 因此稍微按内存播放StringIO。但是,我认为这可能会起作用。
import urllib2
import csv
import pandas as pd
from bs4 import BeautifulSoup
try:
from StringIO import StringIO
except:
from io import StringIO
Cols=['Last','First','ID','Debut']
sock= urllib2.urlopen('http://www.retrosheet.org/retroID.htm')
link=sock.read()
soup = BeautifulSoup(link,'lxml')
csv_data = StringIO(soup.find('pre').text)
df = pd.read_csv(csv_data)
print(df)