【问题标题】:How to create Pandas DataFrame from object?如何从对象创建 Pandas DataFrame?
【发布时间】:2020-12-05 11:05:02
【问题描述】:

我正在学习使用 MLB 数据进行网络抓取。我只想要团队和 WAR 数据。我不确定如何仅解析我正在寻找的数据。我不想要团队记录或括号。任何帮助将不胜感激。

我希望创建一个具有所需输出的 ​​Pandas DataFrame。

所需数据:1) 团队 2))WAR

所需的数据格式(下):

团队战争

ARI 1.3

ATL 1.87

BAL 2.60

BOS .43

...

import pandas as pd

url = 'https://www.baseball-reference.com/leagues/MLB/2020-team-starting-lineups.shtml'

test = pd.read_html(url)

for t in test:
    team = t['Tm']    
    print(team)

我不确定如何解析额外的数据。提前感谢您的时间和建议。 =)

【问题讨论】:

    标签: python pandas dataframe parsing web-scraping


    【解决方案1】:

    您可以使用Series.str.extract获取该列的信息:

    import pandas as pd
    
    url = 'https://www.baseball-reference.com/leagues/MLB/2020-team-starting-lineups.shtml'
    
    test = pd.read_html(url)
    
    for t in test:
        team = t['Tm'].str.extract(r'^(?P<Team>[A-Z]+).*?(?P<WAR>[^\s]+)\s*oWAR')
        print(team)
    

    打印:

       Team    WAR
    0   ARI   1.31
    1   ATL   1.87
    2   BAL   2.60
    3   BOS   0.43
    4   CHC   2.64
    5   CHW   3.09
    6   CIN   0.75
    7   CLE  -0.81
    8   COL   1.89
    9   DET   1.40
    10  HOU   1.64
    11  KCR   0.74
    12  LAA   0.58
    13  LAD   4.51
    14  MIA   1.34
    15  MIL  -1.00
    16  MIN   2.66
    17  NYM   3.58
    18  NYY   3.24
    19  OAK   3.11
    20  PHI   2.12
    21  PIT  -1.89
    22  SDP   2.65
    23  SEA   0.67
    24  SFG   1.05
    25  STL   0.31
    26  TBR   3.26
    27  TEX   0.26
    28  TOR   0.87
    29  WSN   0.11
    

    【讨论】:

    • 谢谢先生。那是正则表达式吗?我不熟悉这种编码风格,但仍然很感激。我会努力学习它并感谢学习经验。如果没有更好的选择,我将把这个答案选为最佳答案。再次感谢您的宝贵时间。
    猜你喜欢
    • 2019-07-08
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多