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

如何使用pandas向CSV文件的两列末尾追加行数据?

报错原因

你提供的代码存在两处问题:

  1. 缺少datetime模块的导入,直接运行会触发未定义的报错
  2. 核心逻辑错误:每次调用函数时会读取CSV中已有的全部数据生成DataFrame,此时DataFrame的行数等于文件中已有的数据行数,你直接对整列df['Date']、df['Price']赋值长度为1的列表,当文件中已有数据行数≠1时就会出现长度不匹配的报错。前两次能运行成功纯属巧合:初始CSV只有表头时读入的DataFrame是空的,赋值长度1的列表会生成1行数据;第二次调用时读入的DataFrame刚好是1行,和赋值的列表长度匹配。

解决方案

方案1:直接构造单行数据追加(效率最高,无需读取全表)

不需要引入pandas,直接用Python内置的csv模块操作即可,代码更轻量,兼容初始CSV不存在的场景:

import csv
import os
import datetime
from random import randint

def date_to_csv():
    file_path = 'test.csv'
    new_row = [datetime.date.today(), randint(1,100)]
    # 判断文件是否存在,不存在则首次写入需要加表头
    file_exists = os.path.exists(file_path)
    with open(file_path, 'a', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        if not file_exists:
            writer.writerow(['Date', 'Price'])
        writer.writerow(new_row)

方案2:用pandas构造单行DataFrame追加

如果一定要用pandas实现,不要读取全表替换列,直接生成新的单行数据再追加:

import pandas as pd
import os
import datetime
from random import randint

def date_to_csv():
    file_path = 'test.csv'
    # 构造仅含待追加数据的单行DataFrame
    new_df = pd.DataFrame({
        'Date': [datetime.date.today()],
        'Price': [randint(1,100)]
    })
    # 文件不存在时需要写表头,已存在则跳过表头
    need_header = not os.path.exists(file_path)
    new_df.to_csv(file_path, mode='a', index=False, header=need_header)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:06:03