我从维基百科页面上删了一张桌子。
我想摆脱国名中的特殊字符 - 主要是\ 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
答案 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