Python网页爬取报错:无法将含逗号字符串转为float类型
解决字符串转float时的千分位逗号问题
你遇到的错误是因为数字字符串包含千分位逗号(比如'5,742.86'),而Python的float()函数无法直接解析带逗号的字符串。解决方法很直接:先去掉逗号再转换类型。
修改核心代码
把原代码中转换market_cap的行:
"market_cap":float(col[2].contents[0][:-1])
改成:
"market_cap": float(col[2].contents[0][:-1].replace(',', ''))
额外补全代码逻辑
你的代码还有两处容易导致后续数据加载失败的问题:
- DataFrame的列名是
["Name","mc_usd_millions"],但字典的键是bank_name和market_cap,两者不匹配,需要把字典键调整为和列名一致:
data_dict={ "Name": col[1].find_all('a')[1].contents[0], "mc_usd_millions": float(col[2].contents[0][:-1].replace(',', '')) }
- 原代码只定义了
data_dict但没有将其添加到DataFrame中,需要在循环内追加数据:
# pandas 2.0及以上版本用该行 df = df._append(data_dict, ignore_index=True) # pandas旧版本用该行 # df = df.append(data_dict, ignore_index=True)
内容的提问来源于stack exchange,提问作者mike onsongo
相关产品推荐
相关产品推荐

