亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 抓取網頁時如何刪除 pandas 數據框中的字符?

使用 Python 抓取網頁時如何刪除 pandas 數據框中的字符?

拉風的咖菲貓 2022-12-06 15:00:25
我正在嘗試通過使用 Python 3 進行網絡抓取,將本網站的表格轉換為 .csv 文件: 2011-2012 NBA National Schedule該表的開頭如下:                Revised Schedule                    Original ScheduleDate            Time      Game                Net   Time      Game                  NetSun., 12/25/11  12 PM     BOS (1) at NY (1)   TNT   12 PM     BOS (7) at NY (7)     ESPNSun., 12/25/11  2:30 PM   MIA (1) at DAL (1)  ABC   2:30 PM   MIA (8) at DAL (5)    ABCSun., 12/25/11  5 PM      CHI (1) at LAL (1)  ABC   5 PM      CHI (6) at LAL (9)    ABCSun., 12/25/11  8 PM      ORL (1) at OKC (1)  ESPN  no game   no game               no gameSun., 12/25/11  10:30 PM  LAC (1) at GS (1)   ESPN  no game   no game               no gameTue., 12/27/11  8 PM      BOS (2) at MIA (2)  TNT   no game   no game               no gameTue., 12/27/11  10:30 PM  UTA (1) at LAL (2)  TNT   no game   no game               no game我只對修訂后的時間表感興趣,即前 4 列。我想要的 .csv 文件中的輸出如下所示:我正在使用這些包:import reimport requestsimport pandas as pdimport numpy as npfrom bs4 import BeautifulSoupfrom itertools import groupby這是我為匹配我想要的格式所做的代碼:df = pd.read_html("https://www.sportsmediawatch.com/2011/12/revised-2011-12-nba-national-tv-schedule/", header=0)[0]revisedCols = ['Date'] + [ col for col in df.columns if 'Revised' in col ]df = df[revisedCols]df.columns = df.iloc[0,:]df = df.iloc[1:,:].reset_index(drop=True)# Format Date to m/d/ydf['Date'] = np.where(df.Date.str.startswith(('10/', '11/', '12/')), df.Date + ' 11', df.Date + ' 12')df['Date']=pd.to_datetime(df['Date'])df['Date']=df['Date'].dt.strftime('%m/%d/%Y')# Split the Game columndf[['Away','Home']] = df.Game.str.split('at',expand=True)   # Final dataframe with desired columnsdf = df[['Date','Time','Away','Home','Net']]df.columns = ['Date', 'Time', 'Away', 'Home', 'Network']print(df)我注意到在“客場”和“主場”列中每個團隊名稱旁邊都有 (1)、(2) 等。我如何實施抓取程序以刪除“客場”和“主場”列中每個團隊名稱旁邊的 (1)、(2) 等?
查看完整描述

4 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

您可以在拆分游戲列后添加此代碼

df['Away']=df['Away'].astype(str).str[0:-4]
df['Home']=df['Home'].astype(str).str[0:-4]


查看完整回答
反對 回復 2022-12-06
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

df['Away'] = df['Away'].str.replace('\(\d*\)', '').str.strip()

df['Home'] = df['Home'].str.replace('\(\d*\)', '').str.strip()

print (df.head())

         Date      Time Away Home Network

0  12/25/2011     12 PM  BOS   NY     TNT

1  12/25/2011   2:30 PM  MIA  DAL     ABC

2  12/25/2011      5 PM  CHI  LAL     ABC

3  12/25/2011      8 PM  ORL  OKC    ESPN

4  12/25/2011  10:30 PM  LAC   GS    ESPN


查看完整回答
反對 回復 2022-12-06
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

不要在 ' 處拆分 Game 列'at,不要特別聲明分隔符。.split()將在每個空白處拆分,然后您只需要 0 索引和 3rd 索引值。所以真的只需要更改 1 行代碼:


從df[['Away','Home']] = df.Game.str.split('at',expand=True) 到df[['Away','Home']] = df.Game.str.split(expand=True)[[0,3]]


import pandas as pd

import numpy as np


df = pd.read_html("https://www.sportsmediawatch.com/2011/12/revised-2011-12-nba-national-tv-schedule/", header=0)[0]


revisedCols = ['Date'] + [ col for col in df.columns if 'Revised' in col ]

df = df[revisedCols]


df.columns = df.iloc[0,:]


df = df.iloc[1:,:].reset_index(drop=True)



# Format Date to m/d/y

df['Date'] = np.where(df.Date.str.startswith(('10/', '11/', '12/')), df.Date + ' 11', df.Date + ' 12')

df['Date']=pd.to_datetime(df['Date'])

df['Date']=df['Date'].dt.strftime('%m/%d/%Y')


# Split the Game column

df[['Away','Home']] = df.Game.str.split(expand=True)[[0,3]]   



# Final dataframe with desired columns

df = df[['Date','Time','Away','Home','Net']]


df.columns = ['Date', 'Time', 'Away', 'Home', 'Network']


print(df)


查看完整回答
反對 回復 2022-12-06
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

您可以使用str.replace括號和數字str.strip,而且似乎在開頭或結尾有一些空格:

df['Away'] = df['Away'].str.replace('\(\d*\)', '').str.strip()

df['Home'] = df['Home'].str.replace('\(\d*\)', '').str.strip()

print (df.head())

         Date      Time Away Home Network

0  12/25/2011     12 PM  BOS   NY     TNT

1  12/25/2011   2:30 PM  MIA  DAL     ABC

2  12/25/2011      5 PM  CHI  LAL     ABC

3  12/25/2011      8 PM  ORL  OKC    ESPN

4  12/25/2011  10:30 PM  LAC   GS    ESPN


查看完整回答
反對 回復 2022-12-06
  • 4 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號