【问题标题】:Beautiful Soup: Parsing between commas in unicode list into Pandas DataframeBeautiful Soup:将 unicode 列表中的逗号解析为 Pandas Dataframe
【发布时间】:2017-06-06 02:41:34
【问题描述】:

我正在抓取姓名和日期的列表。我可以将数据放入一个 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(",")  

【问题讨论】:

    标签: python pandas dataframe unicode beautifulsoup


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      相关资源
      最近更新 更多