美丽的汤:将unicode列表中的逗号解析为Pandas Dataframe

时间:2017-06-06 02:41:35

标签: python pandas dataframe unicode beautifulsoup

我抓了一个名单和日期列表。我可以将数据转换为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(",")  

1 个答案:

答案 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)