You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理网页爬取DataFrame的日期格式并正确导出至CSV

解决方案

不需要额外使用csv模块,用Pandas自带的方法就能彻底解决问题。核心问题是你直接把Series对象转成字符串写入文件,既没处理日期格式,也没遵循CSV的分隔逻辑。

1. 修改数据清洗函数,转换日期格式并重置索引

在clean_dividends函数中,先把日期转换成MM-DD-YYYY格式,再将索引列转为普通列,确保导出时日期和股息各占一列:

def clean_dividends(symbol, dividends):
    index = len(dividends)     
    dividends = dividends.drop(index-1) # 删除最后一行无效数据
    
    # 关键:将原始日期格式转为MM-DD-YYYY,去掉逗号
    dividends['Date'] = pd.to_datetime(dividends['Date']).dt.strftime('%m-%d-%Y')
    
    dividends = dividends.set_index('Date')
    dividends = dividends['Dividends']
    dividends = dividends.str.replace('\\Dividend', '', regex=True)
    dividends = dividends.astype(float)
    dividends.name = symbol
    
    # 重置索引,把日期从索引变回普通列
    dividends = dividends.reset_index()
    return dividends

2. 用Pandas的to_csv方法导出CSV

替换原来手动写入文件的代码,to_csv会自动处理分隔符,避免因逗号导致的列错位:

# 替换原文件写入代码
csv_path = f"{ticker}_div_hist.csv"
if os.path.exists(csv_path):
    os.remove(csv_path)

# 导出CSV,index=False避免生成额外的索引列
clean_div.to_csv(csv_path, index=False)

效果说明

  • 日期转换:pd.to_datetime(...).dt.strftime('%m-%d-%Y')将Nov 04, 2022转为11-04-2022,既去掉了逗号,又符合你需要的格式。
  • 重置索引:把日期从行索引转为普通列,确保导出后有明确的两列:Date和股息值。
  • to_csv方法:自动用逗号分隔列,且会正确处理内容中的特殊字符,不会出现列错位问题。

最终导出的CSV结构如下:

Date,C
11-04-2022,0.51
07-29-2022,0.51
04-29-2022,0.51
02-04-2022,0.51

内容的提问来源于stack exchange,提问作者user14894283

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:11:10