我正在尝试使用Pandas read.html函数解析位于here的表。我能够解析表。但是,列容量用NaN
返回。我不确定这可能是什么原因,我想解析整个表格并将其用于进一步研究。因此,任何帮助表示赞赏。下面是到目前为止的代码。
wiki_url='Above url'
df1=pd.read_html(wiki_url,index_col=0)
答案 0 :(得分:1)
尝试这样的操作(将flavor
作为bs4
包括在内)
df = pd.read_html(r'https://en.wikipedia.org/wiki/List_of_NCAA_Division_I_FBS_football_stadiums',header=[0],flavor='bs4')
df = df[0]
print(df.head())
Image Stadium City State \
0 NaN Aggie Memorial Stadium Las Cruces NM
1 NaN Alamodome San Antonio TX
2 NaN Alaska Airlines Field at Husky Stadium Seattle WA
3 NaN Albertsons Stadium Boise ID
4 NaN Allen E. Paulson Stadium Statesboro GA
Team Conference Capacity \
0 New Mexico State Independent 30,343[1]
1 UTSA C-USA 65000
2 Washington Pac-12 70,500[2]
3 Boise State Mountain West 36,387[3]
4 Georgia Southern Sun Belt 25000
.............................
.............................
要替换方括号下的任何内容,请使用:
df.Capacity = df.Capacity.str.replace(r"\[.*\]","")
print(df.Capacity.head())
0 30,343
1 65000
2 70,500
3 36,387
4 25000
希望这会有所帮助。
答案 1 :(得分:0)
Pandas只能获取上标(无论出于何种原因)而不是实际值,如果您打印所有df1并检查“容量”列,您将看到其中一些值为[1],[2]等等(如果有脚注),否则为NaN。
由于熊猫正在查找并因此返回错误的数据,因此您可能想研究使用BeautifulSoup获取数据或自己抓取数据的替代方法。
答案 2 :(得分:0)
答案@ anky_91发表是正确的。我想尝试另一种方法而不使用Regex。下面是我不使用Regex的解决方案。
df4=pd.read_html('https://en.wikipedia.org/wiki/List_of_NCAA_Division_I_FBS_football_stadiums',header=[0],flavor='bs4')
df4 = df4[0]
解决方案是取出@ anky_91在第1行和第4行中显示的“ r”
print(df4.Capacity.head())
0 30,343
1 65000
2 70,500
3 36,387
4 25000
Name: Capacity, dtype: object