无法摆脱数据帧中Webscraped Table中的字符

时间:2018-04-10 09:38:15

标签: python dataframe unicode replace

我从维基百科页面上删了一张桌子。

我想摆脱国名中的特殊字符 - 主要是\ xa0

我发现了这个问题: remove control character whitespaces from dataframe  这看起来很完美 - 但是当我使用代码时,似乎什么都不做。

我怀疑这是因为我的代码中没有工作的行正在寻找一个完整的字段,而这个字段只是字符。如何让非工作线摆脱空格字符?我不介意使用其他方法,或采用不同的方法 - 但这看起来很干净。高效...

url = "https://en.wikipedia.org/wiki/List_of_countries_by_past_population_(United_Nations,_estimates)"
response = requests.get(url)
scraping_html_table_EQ = BeautifulSoup(response.content, "lxml")
scraping_html_table_EQ = scraping_html_table_EQ.find_all("table", "wikitable")
df = pd.read_html(str(scraping_html_table_EQ))
df = df[0]

df.replace(u'\xa0',u'', regex=True, inplace=True)   #<-- line that doesn't work

df

1 个答案:

答案 0 :(得分:1)

对于我工作(在python3中测试过),请仅使用read_html

df = pd.read_html(url, header=0)[0]
print (df.head())
  Country / territory     1950     1955     1960     1965     1970     1975  \
0               World  2517478  2749365  3007751  3309934  3667801  4045192   
1         Afghanistan     7752     8270     8995     9935    11121    12583   
2             Albania     1263     1420     1636     1896     2151     2411   
3             Algeria     8872     9830    11125    12627    14550    16709   
4      American Samoa       19       20       20       24       27       30   

      1980     1985     1990     1995     2000     2005     2010     2015  
0  4421695  4833180  5289294  5713824  6104538  6496776  6906374  7325929  
1    13211    11630    12068    16773    19702    24400    27962    32527  
2     2681     2967     3281     3107     3122     3082     2902     2897  
3    19338    22566    25912    28904    31184    33268    36036    39667  
4       32       39       47       53       58       59       56       56  

如果需要,第一列转换为索引:

df = pd.read_html(url, header=0, index_col=0)[0]
print (df.head())

                        1950     1955     1960     1965     1970     1975  \
Country / territory                                                         
World                2517478  2749365  3007751  3309934  3667801  4045192   
Afghanistan             7752     8270     8995     9935    11121    12583   
Albania                 1263     1420     1636     1896     2151     2411   
Algeria                 8872     9830    11125    12627    14550    16709   
American Samoa            19       20       20       24       27       30   

                        1980     1985     1990     1995     2000     2005  \
Country / territory                                                         
World                4421695  4833180  5289294  5713824  6104538  6496776   
Afghanistan            13211    11630    12068    16773    19702    24400   
Albania                 2681     2967     3281     3107     3122     3082   
Algeria                19338    22566    25912    28904    31184    33268   
American Samoa            32       39       47       53       58       59   

                        2010     2015  
Country / territory                    
World                6906374  7325929  
Afghanistan            27962    32527  
Albania                 2902     2897  
Algeria                36036    39667  
American Samoa            56       56