2017-07-27 9 views
0

ウェブから、this one(大きなバッティングガメラログテーブル)とまったく同じ複数のテーブルを掻き集めており、シーズンの月から始まる内側ヘッダ行を無視するデータフレームが必要です。ここでパンダのデータフレームの内部ヘッダ行を無視する

は、これまでのところ、私のスクリプトです:

from bs4 import BeautifulSoup 
import pandas as pd 
import csv 
import urllib2 

def stir_the_soup(): 
    player_links = open('player_links.txt', 'r') 
    player_ID_nums = open('player_ID_nums.txt', 'r') 
    id_nums = [x.rstrip('\n') for x in player_ID_nums] 
    idx = 0 
    for url in player_links: 
     #open the url and create bs object 
     player_link = urllib2.urlopen(url) 
     bs = BeautifulSoup(player_link, 'html5lib') 

     #identify which table is needed 
     table_id = "" 
     if url[-12] == 'b': 
      table_id = "batting" 
     elif url[-12] == 'p': 
      table_id = "pitching" 

     #find the table and create dataframe 
     table = str(bs.find('table', {'id' : (table_id + '_gamelogs')})) 

     df = pd.read_html(table, header=0) 
     df2 = df[0] 
     df2 = df2[df2.PA != 'PA'] 

     #for the name of the file and file path 
     file_path = '/Users/kramerbaseball/Desktop/MLB_Web_Scraping_Program/game_logs_non_concussed/' 
     name_of_file = str(id_nums[idx]) 

     df2.to_csv(path_or_buf=(file_path + name_of_file + '.csv'), sep=',', encoding='utf-8') 
     idx += 1 


if __name__ == "__main__": 
    stir_the_soup() 

私はデータフレームを取り、PA == PAや人事==のHR行を無視しようとしたが、それは行を削除しません。任意のヘルプが評価されます

答えて

1

一部の内部ヘッダーの列の値は一定であることに注意してください。

df3 = df2[df2['Gtm']!='Date'] 
+0

はあなたに感謝、これは働いていたが、なぜそれがどこ「GTM」列=「日」です:これはあなたのdfから中間ヘッダをドロップしますか!?彼らは別々の列です –

+0

考えはありませんが、キャプテンは明白です。 –

関連する問題