Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas read_html返回的列在Python中具有NaN值_Python_Html_Pandas_Html Parsing_Wikipedia - Fatal编程技术网

Pandas read_html返回的列在Python中具有NaN值

Pandas read_html返回的列在Python中具有NaN值,python,html,pandas,html-parsing,wikipedia,Python,Html,Pandas,Html Parsing,Wikipedia,我正在尝试使用Pandas read.html函数解析定位的表。我能够解析这个表。但是,返回的列容量为NaN。我不确定,原因可能是什么。我想解析整个表,并将其用于进一步的研究。因此,我们非常感谢您的帮助。下面是到目前为止我的代码 wiki_url='Above url' df1=pd.read_html(wiki_url,index_col=0) Pandas只能获取上标(无论出于何种原因)而不是实际值,如果您打印所有df1并检查容量列,您将看到一些值是[1]、[2]等(如果它们有脚注),否则

我正在尝试使用Pandas read.html函数解析定位的表。我能够解析这个表。但是,返回的列容量为
NaN
。我不确定,原因可能是什么。我想解析整个表,并将其用于进一步的研究。因此,我们非常感谢您的帮助。下面是到目前为止我的代码

wiki_url='Above url'
df1=pd.read_html(wiki_url,index_col=0)

Pandas只能获取上标(无论出于何种原因)而不是实际值,如果您打印所有df1并检查容量列,您将看到一些值是[1]、[2]等(如果它们有脚注),否则为NaN

您可能希望寻找其他方法来获取数据,或者自己使用BeautifulSoup删除数据,因为Pandas正在查找,因此返回了错误的数据。

尝试类似的方法(包括
flavor
as
bs4
):

要替换方括号下的任何内容,请使用:


希望这有帮助。

由@anky_91发布的答案是正确的。我想尝试另一种不使用正则表达式的方法。下面是我不使用正则表达式的解决方案

    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

谢谢只是好奇为什么会有r inside()replace(r“[.]]”,“”)?这是因为我想使用正则表达式。如果这个答案有帮助,请考虑投票和接受。谢谢。:)谢谢我想知道,如果不使用正则表达式,我们是否可以获得类似的结果?如果是这样的话,你能把这种方法也张贴出来吗?我对此表示怀疑。因为不是所有场上都有这种模式。但是你可以单独问一个问题,看看你是否得到了什么。Bdw使用正则表达式有什么问题?
    df4=pd.read_html('https://en.wikipedia.org/wiki/List_of_NCAA_Division_I_FBS_football_stadiums',header=[0],flavor='bs4')
    df4 = df4[0]
 print(df4.Capacity.head())

    0    30,343
    1     65000
    2    70,500
    3    36,387
    4     25000
    Name: Capacity, dtype: object