Python 熊猫从维基百科中读取html作为数据帧,第二个表有Nan

Python 熊猫从维基百科中读取html作为数据帧,第二个表有Nan,python,pandas,Python,Pandas,我正试图将维基百科页面作为数据框架进行阅读 pd.read_html('https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)') 它是有效的,我通过不同的数据框列出了显示GDP表数据的数据框,第一个表看起来不错,所有的数据都已经准备好了 但第二个表在GDP列中都有Nan 这是出乎意料的,但不是我找不到使用其他工具或手动获取它的方法,但仍然可能有办法调整pandas来修复此问题,或者推动未来版本来修复此问题,因此我决

我正试图将维基百科页面作为数据框架进行阅读

pd.read_html('https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)')
它是有效的,我通过不同的数据框列出了显示GDP表数据的数据框,第一个表看起来不错,所有的数据都已经准备好了

但第二个表在GDP列中都有Nan


这是出乎意料的,但不是我找不到使用其他工具或手动获取它的方法,但仍然可能有办法调整pandas来修复此问题,或者推动未来版本来修复此问题,因此我决定发布此问题。

我使用的是python 3.6和pandas 0.23.0,并通过使用
flavor='bs4'
对于
pd.read\u html
。这导致它使用html5lib而不是默认的lxml,因此您必须安装hmtl5lib(我有1.0.1版)

相关版本:

html5lib                  1.0.1            py36h2f9c1c0_0  
pandas                    0.23.0           py36h637b7d7_0  
python                    3.6.6                hc3d631a_0  
完整环境:

# packages in environment at /home/user/miniconda3/envs/so_question:
#
# Name                    Version                   Build  Channel
backcall                  0.1.0                    py36_0  
beautifulsoup4            4.6.0            py36h49b8c8c_1    anaconda
blas                      1.0                         mkl  
ca-certificates           2018.03.07                    0  
certifi                   2018.4.16                py36_0  
decorator                 4.3.0                    py36_0  
html5lib                  1.0.1            py36h2f9c1c0_0  
intel-openmp              2018.0.3                      0  
ipython                   6.4.0                    py36_0  
ipython_genutils          0.2.0            py36hb52b0d5_0  
jedi                      0.12.0                   py36_1  
libedit                   3.1.20170329         h6b74fdf_2  
libffi                    3.2.1                hd88cf55_4  
libgcc-ng                 7.2.0                hdf63c60_3  
libgfortran-ng            7.2.0                hdf63c60_3  
libstdcxx-ng              7.2.0                hdf63c60_3  
mkl                       2018.0.3                      1  
mkl_fft                   1.0.1            py36h3010b51_0  
mkl_random                1.0.1            py36h629b387_0  
ncurses                   6.1                  hf484d3e_0  
numpy                     1.14.5           py36hcd700cb_3  
numpy-base                1.14.5           py36hdbf6ddf_3  
openssl                   1.0.2o               h20670df_0  
pandas                    0.23.0           py36h637b7d7_0  
parso                     0.2.1                    py36_0  
pexpect                   4.6.0                    py36_0  
pickleshare               0.7.4            py36h63277f8_0  
pip                       10.0.1                   py36_0  
prompt_toolkit            1.0.15           py36h17d85b1_0  
ptyprocess                0.6.0                    py36_0  
pygments                  2.2.0            py36h0d3125c_0  
python                    3.6.6                hc3d631a_0  
python-dateutil           2.7.3                    py36_0  
pytz                      2018.5                   py36_0  
readline                  7.0                  ha6073c6_4  
setuptools                39.2.0                   py36_0  
simplegeneric             0.8.1                    py36_2  
six                       1.11.0           py36h372c433_1  
sqlite                    3.24.0               h84994c4_0  
tk                        8.6.7                hc745277_3  
traitlets                 4.3.2            py36h674d592_0  
wcwidth                   0.1.7            py36hdf4376a_0  
webencodings              0.5.1            py36h800622e_1  
wheel                     0.31.1                   py36_0  
xz                        5.2.4                h14c3975_4  
zlib                      1.2.11               ha838bed_2  

我正在使用Python3.6和pandas 0.23.0,并通过使用
flavor='bs4'
来实现它。这导致它使用html5lib而不是默认的lxml,因此您必须安装hmtl5lib(我有1.0.1版)

相关版本:

html5lib                  1.0.1            py36h2f9c1c0_0  
pandas                    0.23.0           py36h637b7d7_0  
python                    3.6.6                hc3d631a_0  
完整环境:

# packages in environment at /home/user/miniconda3/envs/so_question:
#
# Name                    Version                   Build  Channel
backcall                  0.1.0                    py36_0  
beautifulsoup4            4.6.0            py36h49b8c8c_1    anaconda
blas                      1.0                         mkl  
ca-certificates           2018.03.07                    0  
certifi                   2018.4.16                py36_0  
decorator                 4.3.0                    py36_0  
html5lib                  1.0.1            py36h2f9c1c0_0  
intel-openmp              2018.0.3                      0  
ipython                   6.4.0                    py36_0  
ipython_genutils          0.2.0            py36hb52b0d5_0  
jedi                      0.12.0                   py36_1  
libedit                   3.1.20170329         h6b74fdf_2  
libffi                    3.2.1                hd88cf55_4  
libgcc-ng                 7.2.0                hdf63c60_3  
libgfortran-ng            7.2.0                hdf63c60_3  
libstdcxx-ng              7.2.0                hdf63c60_3  
mkl                       2018.0.3                      1  
mkl_fft                   1.0.1            py36h3010b51_0  
mkl_random                1.0.1            py36h629b387_0  
ncurses                   6.1                  hf484d3e_0  
numpy                     1.14.5           py36hcd700cb_3  
numpy-base                1.14.5           py36hdbf6ddf_3  
openssl                   1.0.2o               h20670df_0  
pandas                    0.23.0           py36h637b7d7_0  
parso                     0.2.1                    py36_0  
pexpect                   4.6.0                    py36_0  
pickleshare               0.7.4            py36h63277f8_0  
pip                       10.0.1                   py36_0  
prompt_toolkit            1.0.15           py36h17d85b1_0  
ptyprocess                0.6.0                    py36_0  
pygments                  2.2.0            py36h0d3125c_0  
python                    3.6.6                hc3d631a_0  
python-dateutil           2.7.3                    py36_0  
pytz                      2018.5                   py36_0  
readline                  7.0                  ha6073c6_4  
setuptools                39.2.0                   py36_0  
simplegeneric             0.8.1                    py36_2  
six                       1.11.0           py36h372c433_1  
sqlite                    3.24.0               h84994c4_0  
tk                        8.6.7                hc745277_3  
traitlets                 4.3.2            py36h674d592_0  
wcwidth                   0.1.7            py36hdf4376a_0  
webencodings              0.5.1            py36h800622e_1  
wheel                     0.31.1                   py36_0  
xz                        5.2.4                h14c3975_4  
zlib                      1.2.11               ha838bed_2  

无法复制该问题。你的熊猫版本是什么?当我尝试它时,我在第2列中得到了带有unicode字符的值,但不是NaN。无法复制该问题。你的熊猫版本是什么?当我尝试它时,我得到了第2列中带有unicode字符的值,但不是NaN。很高兴它有帮助!很高兴它有帮助!