如何修改Selenium爬取的Pandas DataFrame中C列的小数点为逗号?
解决Pandas DataFrame列中小数点替换为逗号的问题
问题原因分析
你之前尝试的两种方法失效的原因:
pd.to_numeric:仅负责将字符串转换为数值类型,不会修改数值的显示符号,因此无法替换小数点为逗号。read_html(decimal=','):该参数用于指定页面中原本作为小数点的字符,如果原页面用.做小数点,设置decimal=','会让Pandas把.识别为千分分隔符直接忽略,导致962.5被解析成9625。
可行解决方案
方案1:直接修改DataFrame列的字符串格式(适合需要在DataFrame中保留带逗号的文本)
先将目标列转为字符串类型,再替换小数点为逗号:
# 假设目标列的列名为'C' df1['C'] = df1['C'].astype(str).str.replace('.', ',', regex=False)
如果列中存在非数值内容,可以添加判断避免错误:
def replace_dot_with_comma(x): # 仅处理数值或可转为数值的字符串 if isinstance(x, (int, float)) or (isinstance(x, str) and x.replace('.', '').isdigit()): return str(x).replace('.', ',') return x df1['C'] = df1['C'].apply(replace_dot_with_comma)
方案2:保留数值类型,在Excel输出时设置格式(适合需要数值运算,仅Excel显示用逗号做小数点)
如果需要保留数值的计算能力,只需在导出Excel时通过格式设置让单元格显示逗号作为小数点,推荐用xlsxwriter引擎:
import pandas as pd # 假设df1已完成数据提取 writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter') df1.to_excel(writer, sheet_name='Sheet1', index=False) # 创建带逗号小数点的格式 workbook = writer.book comma_format = workbook.add_format({'num_format': '0,00'}) # 自定义格式,显示两位小数用逗号分隔 # 应用格式到C列(Excel中C列对应列号3) worksheet = writer.sheets['Sheet1'] worksheet.set_column('C:C', None, comma_format) writer.close()
结合Selenium的完整流程示例
from selenium import webdriver import pandas as pd # 初始化浏览器并加载页面 driver = webdriver.Chrome() driver.get('你的目标网页URL') # 获取页面中的table元素并转为DataFrame table = driver.find_element('tag name', 'table') dfs = pd.read_html(table.get_attribute('outerHTML')) df1 = dfs[0] # 取第一个表格(根据实际情况调整索引) # 执行小数点替换(以方案1为例) df1['C'] = df1['C'].astype(str).str.replace('.', ',', regex=False) # 保存为Excel文件 df1.to_excel('result.xlsx', index=False) # 关闭浏览器 driver.quit()
内容的提问来源于stack exchange,提问作者lineage_refugee
相关产品推荐
相关产品推荐

